Add importation of FRF and COH
This commit is contained in:
parent
f3ad689baa
commit
1ded4b389a
Binary file not shown.
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 54 KiB |
@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2019-07-02 mar. 17:45 -->
|
<!-- 2019-07-03 mer. 11:57 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Modal Analysis</title>
|
<title>Modal Analysis</title>
|
||||||
@ -280,26 +280,32 @@ for the JavaScript code in this tag.
|
|||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org356e5b0">1. Setup</a></li>
|
<li><a href="#orgfd1ddd7">1. Setup</a></li>
|
||||||
<li><a href="#org8fdd762">2. Mode extraction and importation</a></li>
|
<li><a href="#org99d32c3">2. Mode extraction and importation</a></li>
|
||||||
<li><a href="#org689c124">3. Positions of the sensors</a></li>
|
<li><a href="#orge353966">3. Positions of the sensors</a></li>
|
||||||
<li><a href="#org8972c45">4. Solids</a></li>
|
<li><a href="#org8d40ac6">4. Solids</a></li>
|
||||||
<li><a href="#orgc79f768">5. From local coordinates to global coordinates</a></li>
|
<li><a href="#orgd982872">5. From local coordinates to global coordinates</a></li>
|
||||||
<li><a href="#orgaa2d870">6. Modal Matrices</a></li>
|
<li><a href="#orgf706067">6. Modal Matrices</a></li>
|
||||||
<li><a href="#org16e1add">7. Modal Complexity</a></li>
|
<li><a href="#org3ff4738">7. Modal Complexity</a></li>
|
||||||
<li><a href="#orgc33fb24">8. Some notes about constraining the number of degrees of freedom</a></li>
|
<li><a href="#org9f862ae">8. Some notes about constraining the number of degrees of freedom</a></li>
|
||||||
<li><a href="#orgd17ef15">9. <span class="todo TODO">TODO</span> Normalization of mode shapes?</a></li>
|
<li><a href="#org4eafab8">9. <span class="todo TODO">TODO</span> Normalization of mode shapes?</a></li>
|
||||||
<li><a href="#orgc7fe2ae">10. Compare Mode Shapes</a></li>
|
<li><a href="#org4275189">10. Compare Mode Shapes</a></li>
|
||||||
<li><a href="#org1ec0de2">11. <span class="todo TODO">TODO</span> Synthesis of FRF curves</a></li>
|
<li><a href="#org4913088">11. Importation of measured FRF curves</a></li>
|
||||||
|
<li><a href="#orgd62aa51">12. Importation of measured FRF curves to global FRF matrix</a></li>
|
||||||
|
<li><a href="#orge91382a">13. Analysis of some FRFs</a></li>
|
||||||
|
<li><a href="#org03aa4ac">14. From local coordinates to global coordinates with the FRFs</a></li>
|
||||||
|
<li><a href="#orgb6f5a18">15. Analysis of some FRF in the global coordinates</a></li>
|
||||||
|
<li><a href="#org75aeafb">16. Compare global coordinates to local coordinates</a></li>
|
||||||
|
<li><a href="#org86e258d">17. <span class="todo TODO">TODO</span> Synthesis of FRF curves</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org356e5b0" class="outline-2">
|
<div id="outline-container-orgfd1ddd7" class="outline-2">
|
||||||
<h2 id="org356e5b0"><span class="section-number-2">1</span> Setup</h2>
|
<h2 id="orgfd1ddd7"><span class="section-number-2">1</span> Setup</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
|
|
||||||
<div id="org44c15fe" class="figure">
|
<div id="org58309c0" class="figure">
|
||||||
<p><img src="figs/nass-modal-test.png" alt="nass-modal-test.png" />
|
<p><img src="figs/nass-modal-test.png" alt="nass-modal-test.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Position and orientation of the accelerometer used</p>
|
<p><span class="figure-number">Figure 1: </span>Position and orientation of the accelerometer used</p>
|
||||||
@ -307,8 +313,8 @@ for the JavaScript code in this tag.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8fdd762" class="outline-2">
|
<div id="outline-container-org99d32c3" class="outline-2">
|
||||||
<h2 id="org8fdd762"><span class="section-number-2">2</span> Mode extraction and importation</h2>
|
<h2 id="org99d32c3"><span class="section-number-2">2</span> Mode extraction and importation</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
First, we split the big <code>modes.asc</code> files into sub text files using <code>bash</code>.
|
First, we split the big <code>modes.asc</code> files into sub text files using <code>bash</code>.
|
||||||
@ -504,8 +510,8 @@ The obtained mode frequencies and damping are shown below.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org689c124" class="outline-2">
|
<div id="outline-container-orge353966" class="outline-2">
|
||||||
<h2 id="org689c124"><span class="section-number-2">3</span> Positions of the sensors</h2>
|
<h2 id="orge353966"><span class="section-number-2">3</span> Positions of the sensors</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
We process the file exported from the <code>modal</code> software containing the positions of the sensors using <code>bash</code>.
|
We process the file exported from the <code>modal</code> software containing the positions of the sensors using <code>bash</code>.
|
||||||
@ -694,8 +700,8 @@ The positions of the sensors relative to the point of interest are shown below.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8972c45" class="outline-2">
|
<div id="outline-container-org8d40ac6" class="outline-2">
|
||||||
<h2 id="org8972c45"><span class="section-number-2">4</span> Solids</h2>
|
<h2 id="org8d40ac6"><span class="section-number-2">4</span> Solids</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
We consider the following solid bodies:
|
We consider the following solid bodies:
|
||||||
@ -710,7 +716,7 @@ We consider the following solid bodies:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
We create a structure <code>solids</code> that contains the accelerometer number of each solid bodies (as shown on figure <a href="#org44c15fe">1</a>).
|
We create a structure <code>solids</code> that contains the accelerometer number of each solid bodies (as shown on figure <a href="#org58309c0">1</a>).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">solids = <span class="org-rainbow-delimiters-depth-1">{}</span>;
|
<pre class="src src-matlab">solids = <span class="org-rainbow-delimiters-depth-1">{}</span>;
|
||||||
@ -727,12 +733,12 @@ solid_names = fields<span class="org-rainbow-delimiters-depth-1">(</span>solids<
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc79f768" class="outline-2">
|
<div id="outline-container-orgd982872" class="outline-2">
|
||||||
<h2 id="orgc79f768"><span class="section-number-2">5</span> From local coordinates to global coordinates</h2>
|
<h2 id="orgd982872"><span class="section-number-2">5</span> From local coordinates to global coordinates</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
|
|
||||||
<div class="figure">
|
<div class="figure">
|
||||||
<p><img src="Figures/local_to_global_coordinates.png" alt="local_to_global_coordinates.png" />
|
<p><img src="figs/local_to_global_coordinates.png" alt="local_to_global_coordinates.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -828,8 +834,8 @@ This inversion is equivalent to a mean square problem.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgaa2d870" class="outline-2">
|
<div id="outline-container-orgf706067" class="outline-2">
|
||||||
<h2 id="orgaa2d870"><span class="section-number-2">6</span> Modal Matrices</h2>
|
<h2 id="orgf706067"><span class="section-number-2">6</span> Modal Matrices</h2>
|
||||||
<div class="outline-text-2" id="text-6">
|
<div class="outline-text-2" id="text-6">
|
||||||
<p>
|
<p>
|
||||||
We want to obtain the two following matrices:
|
We want to obtain the two following matrices:
|
||||||
@ -860,66 +866,48 @@ eigen_vector_M = reshape<span class="org-rainbow-delimiters-depth-1">(</span>mod
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org16e1add" class="outline-2">
|
<div id="outline-container-org3ff4738" class="outline-2">
|
||||||
<h2 id="org16e1add"><span class="section-number-2">7</span> Modal Complexity</h2>
|
<h2 id="org3ff4738"><span class="section-number-2">7</span> Modal Complexity</h2>
|
||||||
<div class="outline-text-2" id="text-7">
|
<div class="outline-text-2" id="text-7">
|
||||||
<p>
|
<p>
|
||||||
Complexity of one mode
|
A method of displaying <b>modal complexity</b> is by plotting the elements of the eigenvector on an <b>Argand diagram</b>, such as the ones shown in figure <a href="#orgc897dfe">3</a>.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">mod_i = <span class="org-highlight-numbers-number">1</span>;
|
|
||||||
i_max = convhull<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
radius = max<span class="org-rainbow-delimiters-depth-1">(</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
theta = linspace<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span>, <span class="org-highlight-numbers-number">100</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
|
|
||||||
<span class="org-type">figure</span>;
|
|
||||||
hold on;
|
|
||||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>radius<span class="org-type">*</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>theta<span class="org-rainbow-delimiters-depth-2">)</span>, radius<span class="org-type">*</span>sin<span class="org-rainbow-delimiters-depth-2">(</span>theta<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span>i_max, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span>i_max, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'ko'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
hold off;
|
|
||||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Real Part'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Imaginary Part'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
<span class="org-type">axis</span> manual equal
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div id="org51e10de" class="figure">
|
|
||||||
<p><img src="figs/modal_complexity.png" alt="modal_complexity.png" />
|
|
||||||
</p>
|
|
||||||
<p><span class="figure-number">Figure 3: </span>Modal Complexity of one mode</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Complexity function of the mode order.
|
To evaluate the complexity of the modes, we plot a polygon around the extremities of the individual vectors.
|
||||||
|
The obtained area of this polygon is then compared with the area of the circle which is based on the length of the largest vector element. The resulting ratio is used as an indication of the complexity of the mode.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">modes_complexity = zeros<span class="org-rainbow-delimiters-depth-1">(</span>mod_n, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
<span class="org-keyword">for</span> <span class="org-variable-name">mod_i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:mod_n</span>
|
|
||||||
<span class="org-constant">i</span> = convhull<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
area_complex = polyarea<span class="org-rainbow-delimiters-depth-1">(</span>real<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-constant">i</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, imag<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-constant">i</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
|
||||||
area_circle = <span class="org-constant">pi</span><span class="org-type">*</span>max<span class="org-rainbow-delimiters-depth-1">(</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>eigen_vector_M<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, mod_i<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">^</span><span class="org-highlight-numbers-number">2</span>;
|
|
||||||
modes_complexity<span class="org-rainbow-delimiters-depth-1">(</span>mod_i<span class="org-rainbow-delimiters-depth-1">)</span> = area_complex<span class="org-type">/</span>area_circle;
|
|
||||||
<span class="org-keyword">end</span>
|
|
||||||
|
|
||||||
<span class="org-type">figure</span>;
|
<p>
|
||||||
plot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>mod_n, modes_complexity, <span class="org-string">'ok'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
A little complex mode is shown on figure <a href="#orgc897dfe">3</a> whereas an highly complex mode is shown on figure <a href="#orge0ec9b3">4</a>.
|
||||||
ylim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
The complexity of all the modes are compared on figure <a href="#org73ab260">5</a>.
|
||||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Mode Number'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Modal Complexity'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
</p>
|
||||||
</pre>
|
|
||||||
|
|
||||||
|
<div id="orgc897dfe" class="figure">
|
||||||
|
<p><img src="figs/modal_complexity_small.png" alt="modal_complexity_small.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 3: </span>Modal Complexity of one mode with small complexity</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org7388c3e" class="figure">
|
<div id="orge0ec9b3" class="figure">
|
||||||
|
<p><img src="figs/modal_complexity_high.png" alt="modal_complexity_high.png" />
|
||||||
|
</p>
|
||||||
|
<p><span class="figure-number">Figure 4: </span>Modal Complexity of one higly complex mode</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="org73ab260" class="figure">
|
||||||
<p><img src="figs/modal_complexities.png" alt="modal_complexities.png" />
|
<p><img src="figs/modal_complexities.png" alt="modal_complexities.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Modal complexity for each mode</p>
|
<p><span class="figure-number">Figure 5: </span>Modal complexity for each mode</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc33fb24" class="outline-2">
|
<div id="outline-container-org9f862ae" class="outline-2">
|
||||||
<h2 id="orgc33fb24"><span class="section-number-2">8</span> Some notes about constraining the number of degrees of freedom</h2>
|
<h2 id="org9f862ae"><span class="section-number-2">8</span> Some notes about constraining the number of degrees of freedom</h2>
|
||||||
<div class="outline-text-2" id="text-8">
|
<div class="outline-text-2" id="text-8">
|
||||||
<p>
|
<p>
|
||||||
We want to have the two eigen matrices.
|
We want to have the two eigen matrices.
|
||||||
@ -1031,8 +1019,8 @@ Is it meaningful to compare mode shapes as they give no information about the am
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd17ef15" class="outline-2">
|
<div id="outline-container-org4eafab8" class="outline-2">
|
||||||
<h2 id="orgd17ef15"><span class="section-number-2">9</span> <span class="todo TODO">TODO</span> Normalization of mode shapes?</h2>
|
<h2 id="org4eafab8"><span class="section-number-2">9</span> <span class="todo TODO">TODO</span> Normalization of mode shapes?</h2>
|
||||||
<div class="outline-text-2" id="text-9">
|
<div class="outline-text-2" id="text-9">
|
||||||
<p>
|
<p>
|
||||||
We normalize each column of the eigen vector matrix.
|
We normalize each column of the eigen vector matrix.
|
||||||
@ -1045,8 +1033,8 @@ Then, each eigenvector as a norm of 1.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc7fe2ae" class="outline-2">
|
<div id="outline-container-org4275189" class="outline-2">
|
||||||
<h2 id="orgc7fe2ae"><span class="section-number-2">10</span> Compare Mode Shapes</h2>
|
<h2 id="org4275189"><span class="section-number-2">10</span> Compare Mode Shapes</h2>
|
||||||
<div class="outline-text-2" id="text-10">
|
<div class="outline-text-2" id="text-10">
|
||||||
<p>
|
<p>
|
||||||
Let's say we want to see for the first mode which DOFs can be neglected.
|
Let's say we want to see for the first mode which DOFs can be neglected.
|
||||||
@ -1100,13 +1088,322 @@ test = mode_shapes_O<span class="org-rainbow-delimiters-depth-1">(</span><span c
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1ec0de2" class="outline-2">
|
<div id="outline-container-org4913088" class="outline-2">
|
||||||
<h2 id="org1ec0de2"><span class="section-number-2">11</span> <span class="todo TODO">TODO</span> Synthesis of FRF curves</h2>
|
<h2 id="org4913088"><span class="section-number-2">11</span> Importation of measured FRF curves</h2>
|
||||||
|
<div class="outline-text-2" id="text-11">
|
||||||
|
<p>
|
||||||
|
There are 24 measurements files corresponding to 24 series of impacts:
|
||||||
|
</p>
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>3 directions, 8 sets of 3 accelerometers</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
For each measurement file, the FRF and coherence between the impact and the 9 accelerations measured.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In reality: 4 sets of 10 things
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">a = load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./modal_analysis/frf_coh/Measurement1.mat'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||||
|
|
||||||
|
ax1 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold on;
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>a.FFT1_AvXSpc_2_1_RMS_X_Val, a.FFT1_AvXSpc_2_1_RMS_Y_Mod<span class="org-rainbow-delimiters-depth-1">)</span>
|
||||||
|
hold off;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XScale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'YScale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,<span class="org-rainbow-delimiters-depth-2">[]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Amplitude'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
title<span class="org-rainbow-delimiters-depth-1">(</span>sprintf<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'From %s, to %s'</span>, FFT1_AvXSpc_2_1_RfName, FFT1_AvXSpc_2_1_RpName))
|
||||||
|
|
||||||
|
ax2 = subplot<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
hold on;
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-3">(</span>a.FFT1_AvXSpc_2_1_RMS_X_Val, a.FFT1_AvXSpc_2_1_RMS_Y_Phas<span class="org-rainbow-delimiters-depth-3">)</span>
|
||||||
|
hold off;
|
||||||
|
ylim<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">[</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-4">]</span><span class="org-rainbow-delimiters-depth-3">)</span>; yticks<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-type">:</span><span class="org-highlight-numbers-number">90</span><span class="org-type">:</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
xlabel<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-string">'Phase </span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">[</span></span><span class="org-string">deg</span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
|
||||||
|
linkaxes<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">[</span>ax1,ax2<span class="org-rainbow-delimiters-depth-4">]</span>,<span class="org-string">'x'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
xlim<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">200</span><span class="org-rainbow-delimiters-depth-4">]</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orgd62aa51" class="outline-2">
|
||||||
|
<h2 id="orgd62aa51"><span class="section-number-2">12</span> Importation of measured FRF curves to global FRF matrix</h2>
|
||||||
|
<div class="outline-text-2" id="text-12">
|
||||||
|
<p>
|
||||||
|
FRF matrix \(n \times p\):
|
||||||
|
</p>
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>\(n\) is the number of measurements: \(3 \times 24\)</li>
|
||||||
|
<li>\(p\) is the number of excitation inputs: 3</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
23 measurements: 3 accelerometers
|
||||||
|
</p>
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
\text{FRF}(\omega_i) = \begin{bmatrix}
|
||||||
|
\frac{D_{1_x}}{F_x}(\omega_i) & \frac{D_{1_x}}{F_y}(\omega_i) & \frac{D_{1_x}}{F_z}(\omega_i) \\
|
||||||
|
\frac{D_{1_y}}{F_x}(\omega_i) & \frac{D_{1_y}}{F_y}(\omega_i) & \frac{D_{1_y}}{F_z}(\omega_i) \\
|
||||||
|
\frac{D_{1_z}}{F_x}(\omega_i) & \frac{D_{1_z}}{F_y}(\omega_i) & \frac{D_{1_z}}{F_z}(\omega_i) \\
|
||||||
|
\frac{D_{2_x}}{F_x}(\omega_i) & \frac{D_{2_x}}{F_y}(\omega_i) & \frac{D_{2_x}}{F_z}(\omega_i) \\
|
||||||
|
\vdots & \vdots & \vdots \\
|
||||||
|
\frac{D_{23_z}}{F_x}(\omega_i) & \frac{D_{23_z}}{F_y}(\omega_i) & \frac{D_{23_z}}{F_z}(\omega_i) \\
|
||||||
|
\end{bmatrix}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">n_meas = <span class="org-highlight-numbers-number">24</span>;
|
||||||
|
n_acc = <span class="org-highlight-numbers-number">23</span>;
|
||||||
|
|
||||||
|
dirs = <span class="org-string">'XYZ'</span>;
|
||||||
|
|
||||||
|
<span class="org-comment">% Number of Accelerometer * DOF for each acccelerometer / Number of excitation / frequency points</span>
|
||||||
|
FRFs = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span>n_acc, <span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">801</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
COHs = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span>n_acc, <span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">801</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
<span class="org-comment">% Loop through measurements</span>
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:n_meas</span>
|
||||||
|
<span class="org-comment">% Load the measurement file</span>
|
||||||
|
meas = load<span class="org-rainbow-delimiters-depth-1">(</span>sprintf<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'./modal_analysis/frf_coh/Measurement%i.mat'</span>, <span class="org-constant">i</span>));
|
||||||
|
|
||||||
|
<span class="org-comment">% First: determine what is the exitation (direction and sign)</span>
|
||||||
|
exc_dir = meas.FFT1_AvXSpc_2_1_RMS_RfName<span class="org-rainbow-delimiters-depth-3">(</span>end<span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
exc_sign = meas.FFT1_AvXSpc_2_1_RMS_RfName<span class="org-rainbow-delimiters-depth-3">(</span>end<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
<span class="org-comment">% Determine what is the correct excitation sign</span>
|
||||||
|
exc_factor = str2num<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">[</span>exc_sign, '<span class="org-highlight-numbers-number">1</span>'<span class="org-rainbow-delimiters-depth-4">]</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
<span class="org-keyword">if</span> exc_dir <span class="org-type">~=</span> <span class="org-string">'Z'</span>
|
||||||
|
exc_factor = exc_factor<span class="org-type">*</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
|
<span class="org-comment">% Then: loop through the nine measurements and store them at the correct location</span>
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">j</span> = <span class="org-constant"><span class="org-highlight-numbers-number">2</span></span><span class="org-constant">:</span><span class="org-constant"><span class="org-highlight-numbers-number">10</span></span>
|
||||||
|
<span class="org-comment">% Determine what is the accelerometer and direction</span>
|
||||||
|
<span class="org-rainbow-delimiters-depth-3">[</span>indices_acc_i<span class="org-rainbow-delimiters-depth-3">]</span> = strfind<span class="org-rainbow-delimiters-depth-3">(</span>meas.<span class="org-rainbow-delimiters-depth-4">(</span>sprintf<span class="org-rainbow-delimiters-depth-5">(</span><span class="org-string">'FFT1_H1_%i_1_RpName', j)), '.'</span>);
|
||||||
|
acc_i = str2num<span class="org-rainbow-delimiters-depth-6">(</span>meas.<span class="org-rainbow-delimiters-depth-7">(</span>sprintf<span class="org-rainbow-delimiters-depth-8">(</span><span class="org-string">'FFT1_H1_%i_1_RpName'</span>, <span class="org-constant">j</span>))(indices_acc_i(<span class="org-highlight-numbers-number">1</span>)<span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>indices_acc_i(<span class="org-highlight-numbers-number">2</span>)<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span>));
|
||||||
|
|
||||||
|
meas_dir = meas.<span class="org-rainbow-delimiters-depth-9">(</span>sprintf<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'FFT1_H1_%i_1_RpName'</span>, <span class="org-constant">j</span>))(end);
|
||||||
|
meas_sign = meas.<span class="org-rainbow-delimiters-depth-2">(</span>sprintf<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">'FFT1_H1_%i_1_RpName'</span>, <span class="org-constant">j</span>))(end<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span>);
|
||||||
|
<span class="org-comment">% Determine what is the correct measurement sign</span>
|
||||||
|
meas_factor = str2num<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">[</span>meas_sign, '<span class="org-highlight-numbers-number">1</span>'<span class="org-rainbow-delimiters-depth-5">]</span><span class="org-rainbow-delimiters-depth-4">)</span>;
|
||||||
|
<span class="org-keyword">if</span> meas_dir <span class="org-type">~=</span> <span class="org-string">'Z'</span>
|
||||||
|
meas_factor = meas_factor<span class="org-type">*</span><span class="org-rainbow-delimiters-depth-4">(</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-4">)</span>;
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
|
% FRFs(acc_i<span class="org-type">+</span>n_acc<span class="org-type">*</span>(find(dirs<span class="org-type">==</span>meas_dir)<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span>), find(dirs<span class="org-type">==</span>exc_dir), <span class="org-type">:</span>) = exc_factor<span class="org-type">*</span>meas_factor<span class="org-type">*</span>meas.(sprintf('FFT1_H1_<span class="org-comment">%i_1_Y_ReIm', j));</span>
|
||||||
|
% COHs(acc_i<span class="org-type">+</span>n_acc<span class="org-type">*</span>(find(dirs<span class="org-type">==</span>meas_dir)<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span>), find(dirs<span class="org-type">==</span>exc_dir), <span class="org-type">:</span>) = meas.(sprintf('FFT1_Coh_<span class="org-comment">%i_1_RMS_Y_Val', j));</span>
|
||||||
|
|
||||||
|
FRFs<span class="org-rainbow-delimiters-depth-4">(</span>find<span class="org-rainbow-delimiters-depth-5">(</span>dirs<span class="org-type">==</span>meas_dir<span class="org-rainbow-delimiters-depth-5">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-5">(</span>acc_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-5">)</span>, find<span class="org-rainbow-delimiters-depth-5">(</span>dirs<span class="org-type">==</span>exc_dir<span class="org-rainbow-delimiters-depth-5">)</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span> = exc_factor<span class="org-type">*</span>meas_factor<span class="org-type">*</span>meas.<span class="org-rainbow-delimiters-depth-4">(</span>sprintf<span class="org-rainbow-delimiters-depth-5">(</span><span class="org-string">'FFT1_H1_%i_1_Y_ReIm'</span>, <span class="org-constant">j</span>));
|
||||||
|
COHs<span class="org-rainbow-delimiters-depth-6">(</span>find<span class="org-rainbow-delimiters-depth-7">(</span>dirs<span class="org-type">==</span>meas_dir<span class="org-rainbow-delimiters-depth-7">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-7">(</span>acc_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-7">)</span>, find<span class="org-rainbow-delimiters-depth-7">(</span>dirs<span class="org-type">==</span>exc_dir<span class="org-rainbow-delimiters-depth-7">)</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-6">)</span> = meas.<span class="org-rainbow-delimiters-depth-6">(</span>sprintf<span class="org-rainbow-delimiters-depth-7">(</span><span class="org-string">'FFT1_Coh_%i_1_RMS_Y_Val'</span>, <span class="org-constant">j</span>));
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
freqs = meas.FFT1_Coh_10_1_RMS_X_Val;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orge91382a" class="outline-2">
|
||||||
|
<h2 id="orge91382a"><span class="section-number-2">13</span> Analysis of some FRFs</h2>
|
||||||
|
<div class="outline-text-2" id="text-13">
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">acc_i = <span class="org-highlight-numbers-number">3</span>;
|
||||||
|
acc_dir = <span class="org-highlight-numbers-number">1</span>;
|
||||||
|
exc_dir = <span class="org-highlight-numbers-number">1</span>;
|
||||||
|
|
||||||
|
<span class="org-type">figure</span>;
|
||||||
|
|
||||||
|
ax1 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold on;
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>squeeze<span class="org-rainbow-delimiters-depth-3">(</span>FRFs<span class="org-rainbow-delimiters-depth-4">(</span>acc_dir<span class="org-type">+</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-5">(</span>acc_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-5">)</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold off;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XScale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'YScale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,<span class="org-rainbow-delimiters-depth-2">[]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Amplitude'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
ax2 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold on;
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, mod<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">180</span><span class="org-type">+</span><span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>phase<span class="org-rainbow-delimiters-depth-3">(</span>squeeze<span class="org-rainbow-delimiters-depth-4">(</span>FRFs<span class="org-rainbow-delimiters-depth-5">(</span>acc_dir<span class="org-type">+</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-6">(</span>acc_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-6">)</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span>, <span class="org-highlight-numbers-number">360</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold off;
|
||||||
|
ylim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; yticks<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-type">:</span><span class="org-highlight-numbers-number">90</span><span class="org-type">:</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Phase </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">deg</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
linkaxes<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span>ax1,ax2<span class="org-rainbow-delimiters-depth-2">]</span>,<span class="org-string">'x'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">200</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||||
|
hold on;
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:</span><span class="org-constant"><span class="org-highlight-numbers-number">3</span></span><span class="org-constant">*n_acc</span>
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>COHs<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'color'</span>, <span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
hold off;
|
||||||
|
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
ylabel<span class="org-rainbow-delimiters-depth-1">(</span>'Coherence <span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">\</span><span class="org-comment">%]');</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Composite Response Function.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We here sum the norm instead of the complex numbers.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">HHx = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>sum<span class="org-rainbow-delimiters-depth-2">(</span>abs<span class="org-rainbow-delimiters-depth-3">(</span>FRFs<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
HHy = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>sum<span class="org-rainbow-delimiters-depth-2">(</span>abs<span class="org-rainbow-delimiters-depth-3">(</span>FRFs<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
HHz = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>sum<span class="org-rainbow-delimiters-depth-2">(</span>abs<span class="org-rainbow-delimiters-depth-3">(</span>FRFs<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
HH = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>sum<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">[</span>HHx, HHy, HHz<span class="org-rainbow-delimiters-depth-3">]</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">exc_dir = <span class="org-highlight-numbers-number">3</span>;
|
||||||
|
|
||||||
|
<span class="org-type">figure</span>;
|
||||||
|
hold on;
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:</span><span class="org-constant"><span class="org-highlight-numbers-number">3</span></span><span class="org-constant">*n_acc</span>
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>squeeze<span class="org-rainbow-delimiters-depth-3">(</span>FRFs<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-constant">i</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'color'</span>, <span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>HHx<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>HHy<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>HHz<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>HH<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'k'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold off;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XScale', 'lin'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'YScale', 'lin'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Amplitude'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">200</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org03aa4ac" class="outline-2">
|
||||||
|
<h2 id="org03aa4ac"><span class="section-number-2">14</span> From local coordinates to global coordinates with the FRFs</h2>
|
||||||
|
<div class="outline-text-2" id="text-14">
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab"><span class="org-comment">% Number of Solids * DOF for each solid / Number of excitation / frequency points</span>
|
||||||
|
FRFs_O = zeros<span class="org-rainbow-delimiters-depth-1">(</span>length<span class="org-rainbow-delimiters-depth-2">(</span>solid_names<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">801</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">exc_dir</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:</span><span class="org-constant"><span class="org-highlight-numbers-number">3</span></span>
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">solid_i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">solid_names</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||||
|
solids_i = solids.<span class="org-rainbow-delimiters-depth-1">(</span>solid_names<span class="org-rainbow-delimiters-depth-2">{</span>solid_i<span class="org-rainbow-delimiters-depth-2">}</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
A = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span>length<span class="org-rainbow-delimiters-depth-2">(</span>solids_i<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">6</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">solids_i</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||||
|
A<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-1">)</span> = eye<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
A<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">4</span><span class="org-type">:</span><span class="org-highlight-numbers-number">6</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">0</span> acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span>acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span> ; <span class="org-type">-</span>acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-highlight-numbers-number">0</span> acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> ; acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span>acc_pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">]</span>;
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:</span><span class="org-constant"><span class="org-highlight-numbers-number">801</span></span>
|
||||||
|
FRFs_O<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">(</span>solid_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>solid_i<span class="org-type">*</span><span class="org-highlight-numbers-number">6</span>, exc_dir, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span> = A<span class="org-type">\</span>FRFs<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">(</span>solids_i<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">3</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>solids_i<span class="org-rainbow-delimiters-depth-2">(</span>end<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">3</span>, exc_dir, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-orgb6f5a18" class="outline-2">
|
||||||
|
<h2 id="orgb6f5a18"><span class="section-number-2">15</span> Analysis of some FRF in the global coordinates</h2>
|
||||||
|
<div class="outline-text-2" id="text-15">
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">solid_i = <span class="org-highlight-numbers-number">6</span>;
|
||||||
|
dir_i = <span class="org-highlight-numbers-number">1</span>;
|
||||||
|
exc_dir = <span class="org-highlight-numbers-number">1</span>;
|
||||||
|
|
||||||
|
<span class="org-type">figure</span>;
|
||||||
|
|
||||||
|
ax1 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold on;
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>squeeze<span class="org-rainbow-delimiters-depth-3">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span>solid_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>dir_i, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold off;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XScale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'YScale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,<span class="org-rainbow-delimiters-depth-2">[]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Amplitude'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
ax2 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold on;
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, mod<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">180</span><span class="org-type">+</span><span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>phase<span class="org-rainbow-delimiters-depth-3">(</span>squeeze<span class="org-rainbow-delimiters-depth-4">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-5">(</span><span class="org-rainbow-delimiters-depth-6">(</span>solid_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>dir_i, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span>, <span class="org-highlight-numbers-number">360</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold off;
|
||||||
|
ylim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; yticks<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-type">:</span><span class="org-highlight-numbers-number">90</span><span class="org-type">:</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Phase </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">deg</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
linkaxes<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span>ax1,ax2<span class="org-rainbow-delimiters-depth-2">]</span>,<span class="org-string">'x'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">200</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org75aeafb" class="outline-2">
|
||||||
|
<h2 id="org75aeafb"><span class="section-number-2">16</span> Compare global coordinates to local coordinates</h2>
|
||||||
|
<div class="outline-text-2" id="text-16">
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">solid_i = <span class="org-highlight-numbers-number">1</span>;
|
||||||
|
acc_dir = <span class="org-highlight-numbers-number">3</span>;
|
||||||
|
exc_dir = <span class="org-highlight-numbers-number">3</span>;
|
||||||
|
|
||||||
|
<span class="org-type">figure</span>;
|
||||||
|
|
||||||
|
ax1 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold on;
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant">solids.</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">solid_names</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-2">{</span></span><span class="org-constant">solid_i</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-2">}</span></span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>squeeze<span class="org-rainbow-delimiters-depth-3">(</span>FRFs<span class="org-rainbow-delimiters-depth-4">(</span>acc_dir<span class="org-type">+</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-5">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-5">)</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>squeeze<span class="org-rainbow-delimiters-depth-3">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span>solid_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>acc_dir, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'-k'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold off;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XScale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'YScale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,<span class="org-rainbow-delimiters-depth-2">[]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Amplitude'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
ax2 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold on;
|
||||||
|
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant">solids.</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">solid_names</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-2">{</span></span><span class="org-constant">solid_i</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-2">}</span></span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, mod<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">180</span><span class="org-type">+</span><span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>phase<span class="org-rainbow-delimiters-depth-3">(</span>squeeze<span class="org-rainbow-delimiters-depth-4">(</span>FRFs<span class="org-rainbow-delimiters-depth-5">(</span>acc_dir<span class="org-type">+</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-6">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-6">)</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span>, <span class="org-highlight-numbers-number">360</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-keyword">end</span>
|
||||||
|
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, mod<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">180</span><span class="org-type">+</span><span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>phase<span class="org-rainbow-delimiters-depth-3">(</span>squeeze<span class="org-rainbow-delimiters-depth-4">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-5">(</span><span class="org-rainbow-delimiters-depth-6">(</span>solid_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>acc_dir, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span>, <span class="org-highlight-numbers-number">360</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-string">'-k'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
hold off;
|
||||||
|
ylim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; yticks<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-type">:</span><span class="org-highlight-numbers-number">90</span><span class="org-type">:</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Phase </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">deg</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
|
||||||
|
linkaxes<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span>ax1,ax2<span class="org-rainbow-delimiters-depth-2">]</span>,<span class="org-string">'x'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">200</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="outline-container-org86e258d" class="outline-2">
|
||||||
|
<h2 id="org86e258d"><span class="section-number-2">17</span> <span class="todo TODO">TODO</span> Synthesis of FRF curves</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2019-07-02 mar. 17:45</p>
|
<p class="date">Created: 2019-07-03 mer. 11:57</p>
|
||||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
@ -347,7 +347,7 @@ The obtained area of this polygon is then compared with the area of the circle w
|
|||||||
A little complex mode is shown on figure [[fig:modal_complexity_small]] whereas an highly complex mode is shown on figure [[fig:modal_complexity_high]].
|
A little complex mode is shown on figure [[fig:modal_complexity_small]] whereas an highly complex mode is shown on figure [[fig:modal_complexity_high]].
|
||||||
The complexity of all the modes are compared on figure [[fig:modal_complexities]].
|
The complexity of all the modes are compared on figure [[fig:modal_complexities]].
|
||||||
|
|
||||||
#+begin_src matlab :export none
|
#+begin_src matlab :exports none
|
||||||
mod_i = 1;
|
mod_i = 1;
|
||||||
i_max = convhull(real(eigen_vector_M(:, mod_i)), imag(eigen_vector_M(:, mod_i)));
|
i_max = convhull(real(eigen_vector_M(:, mod_i)), imag(eigen_vector_M(:, mod_i)));
|
||||||
radius = max(abs(eigen_vector_M(:, mod_i)));
|
radius = max(abs(eigen_vector_M(:, mod_i)));
|
||||||
@ -373,7 +373,7 @@ The complexity of all the modes are compared on figure [[fig:modal_complexities]
|
|||||||
#+CAPTION: Modal Complexity of one mode with small complexity
|
#+CAPTION: Modal Complexity of one mode with small complexity
|
||||||
[[file:figs/modal_complexity_small.png]]
|
[[file:figs/modal_complexity_small.png]]
|
||||||
|
|
||||||
#+begin_src matlab :export none
|
#+begin_src matlab :exports none
|
||||||
mod_i = 8;
|
mod_i = 8;
|
||||||
i_max = convhull(real(eigen_vector_M(:, mod_i)), imag(eigen_vector_M(:, mod_i)));
|
i_max = convhull(real(eigen_vector_M(:, mod_i)), imag(eigen_vector_M(:, mod_i)));
|
||||||
radius = max(abs(eigen_vector_M(:, mod_i)));
|
radius = max(abs(eigen_vector_M(:, mod_i)));
|
||||||
@ -399,7 +399,7 @@ The complexity of all the modes are compared on figure [[fig:modal_complexities]
|
|||||||
#+CAPTION: Modal Complexity of one higly complex mode
|
#+CAPTION: Modal Complexity of one higly complex mode
|
||||||
[[file:figs/modal_complexity_high.png]]
|
[[file:figs/modal_complexity_high.png]]
|
||||||
|
|
||||||
#+begin_src matlab :export none
|
#+begin_src matlab :exports none
|
||||||
modes_complexity = zeros(mod_n, 1);
|
modes_complexity = zeros(mod_n, 1);
|
||||||
for mod_i = 1:mod_n
|
for mod_i = 1:mod_n
|
||||||
i = convhull(real(eigen_vector_M(:, mod_i)), imag(eigen_vector_M(:, mod_i)));
|
i = convhull(real(eigen_vector_M(:, mod_i)), imag(eigen_vector_M(:, mod_i)));
|
||||||
@ -508,4 +508,261 @@ If we look at the z motion for instance, we will find that we cannot neglect tha
|
|||||||
test = mode_shapes_O(10, 2, :)/norm(squeeze(mode_shapes_O(10, 2, :)));
|
test = mode_shapes_O(10, 2, :)/norm(squeeze(mode_shapes_O(10, 2, :)));
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Importation of measured FRF curves
|
||||||
|
There are 24 measurements files corresponding to 24 series of impacts:
|
||||||
|
- 3 directions, 8 sets of 3 accelerometers
|
||||||
|
For each measurement file, the FRF and coherence between the impact and the 9 accelerations measured.
|
||||||
|
|
||||||
|
In reality: 4 sets of 10 things
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
a = load('./modal_analysis/frf_coh/Measurement1.mat');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
figure;
|
||||||
|
|
||||||
|
ax1 = subplot(2, 1, 1);
|
||||||
|
hold on;
|
||||||
|
plot(a.FFT1_AvXSpc_2_1_RMS_X_Val, a.FFT1_AvXSpc_2_1_RMS_Y_Mod)
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
set(gca, 'XTickLabel',[]);
|
||||||
|
ylabel('Amplitude');
|
||||||
|
title(sprintf('From %s, to %s', FFT1_AvXSpc_2_1_RfName, FFT1_AvXSpc_2_1_RpName))
|
||||||
|
|
||||||
|
ax2 = subplot(2, 1, 2);
|
||||||
|
hold on;
|
||||||
|
plot(a.FFT1_AvXSpc_2_1_RMS_X_Val, a.FFT1_AvXSpc_2_1_RMS_Y_Phas)
|
||||||
|
hold off;
|
||||||
|
ylim([-180, 180]); yticks(-180:90:180);
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
|
set(gca, 'xscale', 'log');
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
xlim([1, 200]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Importation of measured FRF curves to global FRF matrix
|
||||||
|
FRF matrix $n \times p$:
|
||||||
|
- $n$ is the number of measurements: $3 \times 24$
|
||||||
|
- $p$ is the number of excitation inputs: 3
|
||||||
|
|
||||||
|
23 measurements: 3 accelerometers
|
||||||
|
|
||||||
|
\begin{equation}
|
||||||
|
\text{FRF}(\omega_i) = \begin{bmatrix}
|
||||||
|
\frac{D_{1_x}}{F_x}(\omega_i) & \frac{D_{1_x}}{F_y}(\omega_i) & \frac{D_{1_x}}{F_z}(\omega_i) \\
|
||||||
|
\frac{D_{1_y}}{F_x}(\omega_i) & \frac{D_{1_y}}{F_y}(\omega_i) & \frac{D_{1_y}}{F_z}(\omega_i) \\
|
||||||
|
\frac{D_{1_z}}{F_x}(\omega_i) & \frac{D_{1_z}}{F_y}(\omega_i) & \frac{D_{1_z}}{F_z}(\omega_i) \\
|
||||||
|
\frac{D_{2_x}}{F_x}(\omega_i) & \frac{D_{2_x}}{F_y}(\omega_i) & \frac{D_{2_x}}{F_z}(\omega_i) \\
|
||||||
|
\vdots & \vdots & \vdots \\
|
||||||
|
\frac{D_{23_z}}{F_x}(\omega_i) & \frac{D_{23_z}}{F_y}(\omega_i) & \frac{D_{23_z}}{F_z}(\omega_i) \\
|
||||||
|
\end{bmatrix}
|
||||||
|
\end{equation}
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
n_meas = 24;
|
||||||
|
n_acc = 23;
|
||||||
|
|
||||||
|
dirs = 'XYZ';
|
||||||
|
|
||||||
|
% Number of Accelerometer * DOF for each acccelerometer / Number of excitation / frequency points
|
||||||
|
FRFs = zeros(3*n_acc, 3, 801);
|
||||||
|
COHs = zeros(3*n_acc, 3, 801);
|
||||||
|
|
||||||
|
% Loop through measurements
|
||||||
|
for i = 1:n_meas
|
||||||
|
% Load the measurement file
|
||||||
|
meas = load(sprintf('./modal_analysis/frf_coh/Measurement%i.mat', i));
|
||||||
|
|
||||||
|
% First: determine what is the exitation (direction and sign)
|
||||||
|
exc_dir = meas.FFT1_AvXSpc_2_1_RMS_RfName(end);
|
||||||
|
exc_sign = meas.FFT1_AvXSpc_2_1_RMS_RfName(end-1);
|
||||||
|
% Determine what is the correct excitation sign
|
||||||
|
exc_factor = str2num([exc_sign, '1']);
|
||||||
|
if exc_dir ~= 'Z'
|
||||||
|
exc_factor = exc_factor*(-1);
|
||||||
|
end
|
||||||
|
|
||||||
|
% Then: loop through the nine measurements and store them at the correct location
|
||||||
|
for j = 2:10
|
||||||
|
% Determine what is the accelerometer and direction
|
||||||
|
[indices_acc_i] = strfind(meas.(sprintf('FFT1_H1_%i_1_RpName', j)), '.');
|
||||||
|
acc_i = str2num(meas.(sprintf('FFT1_H1_%i_1_RpName', j))(indices_acc_i(1)+1:indices_acc_i(2)-1));
|
||||||
|
|
||||||
|
meas_dir = meas.(sprintf('FFT1_H1_%i_1_RpName', j))(end);
|
||||||
|
meas_sign = meas.(sprintf('FFT1_H1_%i_1_RpName', j))(end-1);
|
||||||
|
% Determine what is the correct measurement sign
|
||||||
|
meas_factor = str2num([meas_sign, '1']);
|
||||||
|
if meas_dir ~= 'Z'
|
||||||
|
meas_factor = meas_factor*(-1);
|
||||||
|
end
|
||||||
|
|
||||||
|
% FRFs(acc_i+n_acc*(find(dirs==meas_dir)-1), find(dirs==exc_dir), :) = exc_factor*meas_factor*meas.(sprintf('FFT1_H1_%i_1_Y_ReIm', j));
|
||||||
|
% COHs(acc_i+n_acc*(find(dirs==meas_dir)-1), find(dirs==exc_dir), :) = meas.(sprintf('FFT1_Coh_%i_1_RMS_Y_Val', j));
|
||||||
|
|
||||||
|
FRFs(find(dirs==meas_dir)+3*(acc_i-1), find(dirs==exc_dir), :) = exc_factor*meas_factor*meas.(sprintf('FFT1_H1_%i_1_Y_ReIm', j));
|
||||||
|
COHs(find(dirs==meas_dir)+3*(acc_i-1), find(dirs==exc_dir), :) = meas.(sprintf('FFT1_Coh_%i_1_RMS_Y_Val', j));
|
||||||
|
end
|
||||||
|
end
|
||||||
|
freqs = meas.FFT1_Coh_10_1_RMS_X_Val;
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Analysis of some FRFs
|
||||||
|
#+begin_src matlab
|
||||||
|
acc_i = 3;
|
||||||
|
acc_dir = 1;
|
||||||
|
exc_dir = 1;
|
||||||
|
|
||||||
|
figure;
|
||||||
|
|
||||||
|
ax1 = subplot(2, 1, 1);
|
||||||
|
hold on;
|
||||||
|
plot(freqs, abs(squeeze(FRFs(acc_dir+3*(acc_i-1), exc_dir, :))));
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
set(gca, 'XTickLabel',[]);
|
||||||
|
ylabel('Amplitude');
|
||||||
|
|
||||||
|
ax2 = subplot(2, 1, 2);
|
||||||
|
hold on;
|
||||||
|
plot(freqs, mod(180+180/pi*phase(squeeze(FRFs(acc_dir+3*(acc_i-1), exc_dir, :))), 360)-180);
|
||||||
|
hold off;
|
||||||
|
ylim([-180, 180]); yticks(-180:90:180);
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
|
set(gca, 'xscale', 'log');
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
xlim([1, 200]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
for i = 1:3*n_acc
|
||||||
|
plot(freqs, squeeze(COHs(i, 1, :)), 'color', [0, 0, 0, 0.2]);
|
||||||
|
end
|
||||||
|
hold off;
|
||||||
|
xlabel('Frequency [Hz]');
|
||||||
|
ylabel('Coherence [\%]');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
Composite Response Function.
|
||||||
|
|
||||||
|
We here sum the norm instead of the complex numbers.
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
HHx = squeeze(sum(abs(FRFs(:, 1, :))));
|
||||||
|
HHy = squeeze(sum(abs(FRFs(:, 2, :))));
|
||||||
|
HHz = squeeze(sum(abs(FRFs(:, 3, :))));
|
||||||
|
HH = squeeze(sum([HHx, HHy, HHz], 2));
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
exc_dir = 3;
|
||||||
|
|
||||||
|
figure;
|
||||||
|
hold on;
|
||||||
|
for i = 1:3*n_acc
|
||||||
|
plot(freqs, abs(squeeze(FRFs(i, exc_dir, :))), 'color', [0, 0, 0, 0.2]);
|
||||||
|
end
|
||||||
|
plot(freqs, abs(HHx));
|
||||||
|
plot(freqs, abs(HHy));
|
||||||
|
plot(freqs, abs(HHz));
|
||||||
|
plot(freqs, abs(HH), 'k');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'lin'); set(gca, 'YScale', 'lin');
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Amplitude');
|
||||||
|
xlim([1, 200]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* From local coordinates to global coordinates with the FRFs
|
||||||
|
#+begin_src matlab
|
||||||
|
% Number of Solids * DOF for each solid / Number of excitation / frequency points
|
||||||
|
FRFs_O = zeros(length(solid_names)*6, 3, 801);
|
||||||
|
|
||||||
|
for exc_dir = 1:3
|
||||||
|
for solid_i = 1:length(solid_names)
|
||||||
|
solids_i = solids.(solid_names{solid_i});
|
||||||
|
|
||||||
|
A = zeros(3*length(solids_i), 6);
|
||||||
|
for i = 1:length(solids_i)
|
||||||
|
A(3*(i-1)+1:3*i, 1:3) = eye(3);
|
||||||
|
|
||||||
|
A(3*(i-1)+1:3*i, 4:6) = [0 acc_pos(i, 3) -acc_pos(i, 2) ; -acc_pos(i, 3) 0 acc_pos(i, 1) ; acc_pos(i, 2) -acc_pos(i, 1) 0];
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1:801
|
||||||
|
FRFs_O((solid_i-1)*6+1:solid_i*6, exc_dir, i) = A\FRFs((solids_i(1)-1)*3+1:solids_i(end)*3, exc_dir, i);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Analysis of some FRF in the global coordinates
|
||||||
|
#+begin_src matlab
|
||||||
|
solid_i = 6;
|
||||||
|
dir_i = 1;
|
||||||
|
exc_dir = 1;
|
||||||
|
|
||||||
|
figure;
|
||||||
|
|
||||||
|
ax1 = subplot(2, 1, 1);
|
||||||
|
hold on;
|
||||||
|
plot(freqs, abs(squeeze(FRFs_O((solid_i-1)*6+dir_i, exc_dir, :))));
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
set(gca, 'XTickLabel',[]);
|
||||||
|
ylabel('Amplitude');
|
||||||
|
|
||||||
|
ax2 = subplot(2, 1, 2);
|
||||||
|
hold on;
|
||||||
|
plot(freqs, mod(180+180/pi*phase(squeeze(FRFs_O((solid_i-1)*6+dir_i, exc_dir, :))), 360)-180);
|
||||||
|
hold off;
|
||||||
|
ylim([-180, 180]); yticks(-180:90:180);
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
|
set(gca, 'xscale', 'log');
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
xlim([1, 200]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Compare global coordinates to local coordinates
|
||||||
|
#+begin_src matlab
|
||||||
|
solid_i = 1;
|
||||||
|
acc_dir = 3;
|
||||||
|
exc_dir = 3;
|
||||||
|
|
||||||
|
figure;
|
||||||
|
|
||||||
|
ax1 = subplot(2, 1, 1);
|
||||||
|
hold on;
|
||||||
|
for i = solids.(solid_names{solid_i})
|
||||||
|
plot(freqs, abs(squeeze(FRFs(acc_dir+3*(i-1), exc_dir, :))));
|
||||||
|
end
|
||||||
|
plot(freqs, abs(squeeze(FRFs_O((solid_i-1)*6+acc_dir, exc_dir, :))), '-k');
|
||||||
|
hold off;
|
||||||
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
|
set(gca, 'XTickLabel',[]);
|
||||||
|
ylabel('Amplitude');
|
||||||
|
|
||||||
|
ax2 = subplot(2, 1, 2);
|
||||||
|
hold on;
|
||||||
|
for i = solids.(solid_names{solid_i})
|
||||||
|
plot(freqs, mod(180+180/pi*phase(squeeze(FRFs(acc_dir+3*(i-1), exc_dir, :))), 360)-180);
|
||||||
|
end
|
||||||
|
plot(freqs, mod(180+180/pi*phase(squeeze(FRFs_O((solid_i-1)*6+acc_dir, exc_dir, :))), 360)-180, '-k');
|
||||||
|
hold off;
|
||||||
|
ylim([-180, 180]); yticks(-180:90:180);
|
||||||
|
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
|
||||||
|
set(gca, 'xscale', 'log');
|
||||||
|
|
||||||
|
linkaxes([ax1,ax2],'x');
|
||||||
|
xlim([1, 200]);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
* TODO Synthesis of FRF curves
|
* TODO Synthesis of FRF curves
|
||||||
|
Loading…
x
Reference in New Issue
Block a user