Add importation of FRF and COH

This commit is contained in:
Thomas Dehaeze 2019-07-03 11:57:59 +02:00
parent f3ad689baa
commit 1ded4b389a
3 changed files with 635 additions and 81 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<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 name="viewport" content="width=device-width, initial-scale=1" />
<title>Modal Analysis</title>
@ -280,26 +280,32 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org356e5b0">1. Setup</a></li>
<li><a href="#org8fdd762">2. Mode extraction and importation</a></li>
<li><a href="#org689c124">3. Positions of the sensors</a></li>
<li><a href="#org8972c45">4. Solids</a></li>
<li><a href="#orgc79f768">5. From local coordinates to global coordinates</a></li>
<li><a href="#orgaa2d870">6. Modal Matrices</a></li>
<li><a href="#org16e1add">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="#orgd17ef15">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="#org1ec0de2">11. <span class="todo TODO">TODO</span> Synthesis of FRF curves</a></li>
<li><a href="#orgfd1ddd7">1. Setup</a></li>
<li><a href="#org99d32c3">2. Mode extraction and importation</a></li>
<li><a href="#orge353966">3. Positions of the sensors</a></li>
<li><a href="#org8d40ac6">4. Solids</a></li>
<li><a href="#orgd982872">5. From local coordinates to global coordinates</a></li>
<li><a href="#orgf706067">6. Modal Matrices</a></li>
<li><a href="#org3ff4738">7. Modal Complexity</a></li>
<li><a href="#org9f862ae">8. Some notes about constraining the number of degrees of freedom</a></li>
<li><a href="#org4eafab8">9. <span class="todo TODO">TODO</span> Normalization of mode shapes?</a></li>
<li><a href="#org4275189">10. Compare Mode Shapes</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>
</div>
</div>
<div id="outline-container-org356e5b0" class="outline-2">
<h2 id="org356e5b0"><span class="section-number-2">1</span> Setup</h2>
<div id="outline-container-orgfd1ddd7" class="outline-2">
<h2 id="orgfd1ddd7"><span class="section-number-2">1</span> Setup</h2>
<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>
<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 id="outline-container-org8fdd762" class="outline-2">
<h2 id="org8fdd762"><span class="section-number-2">2</span> Mode extraction and importation</h2>
<div id="outline-container-org99d32c3" class="outline-2">
<h2 id="org99d32c3"><span class="section-number-2">2</span> Mode extraction and importation</h2>
<div class="outline-text-2" id="text-2">
<p>
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 id="outline-container-org689c124" class="outline-2">
<h2 id="org689c124"><span class="section-number-2">3</span> Positions of the sensors</h2>
<div id="outline-container-orge353966" class="outline-2">
<h2 id="orge353966"><span class="section-number-2">3</span> Positions of the sensors</h2>
<div class="outline-text-2" id="text-3">
<p>
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 id="outline-container-org8972c45" class="outline-2">
<h2 id="org8972c45"><span class="section-number-2">4</span> Solids</h2>
<div id="outline-container-org8d40ac6" class="outline-2">
<h2 id="org8d40ac6"><span class="section-number-2">4</span> Solids</h2>
<div class="outline-text-2" id="text-4">
<p>
We consider the following solid bodies:
@ -710,7 +716,7 @@ We consider the following solid bodies:
</ul>
<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>
<div class="org-src-container">
<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 id="outline-container-orgc79f768" class="outline-2">
<h2 id="orgc79f768"><span class="section-number-2">5</span> From local coordinates to global coordinates</h2>
<div id="outline-container-orgd982872" class="outline-2">
<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="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>
</div>
@ -828,8 +834,8 @@ This inversion is equivalent to a mean square problem.
</div>
</div>
<div id="outline-container-orgaa2d870" class="outline-2">
<h2 id="orgaa2d870"><span class="section-number-2">6</span> Modal Matrices</h2>
<div id="outline-container-orgf706067" class="outline-2">
<h2 id="orgf706067"><span class="section-number-2">6</span> Modal Matrices</h2>
<div class="outline-text-2" id="text-6">
<p>
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 id="outline-container-org16e1add" class="outline-2">
<h2 id="org16e1add"><span class="section-number-2">7</span> Modal Complexity</h2>
<div id="outline-container-org3ff4738" class="outline-2">
<h2 id="org3ff4738"><span class="section-number-2">7</span> Modal Complexity</h2>
<div class="outline-text-2" id="text-7">
<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>
<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>
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>
<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>;
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>;
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>;
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>;
</pre>
<p>
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>.
The complexity of all the modes are compared on figure <a href="#org73ab260">5</a>.
</p>
<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 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>
<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 id="outline-container-orgc33fb24" class="outline-2">
<h2 id="orgc33fb24"><span class="section-number-2">8</span> Some notes about constraining the number of degrees of freedom</h2>
<div id="outline-container-org9f862ae" class="outline-2">
<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">
<p>
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 id="outline-container-orgd17ef15" class="outline-2">
<h2 id="orgd17ef15"><span class="section-number-2">9</span> <span class="todo TODO">TODO</span> Normalization of mode shapes?</h2>
<div id="outline-container-org4eafab8" class="outline-2">
<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">
<p>
We normalize each column of the eigen vector matrix.
@ -1045,8 +1033,8 @@ Then, each eigenvector as a norm of 1.
</div>
</div>
<div id="outline-container-orgc7fe2ae" class="outline-2">
<h2 id="orgc7fe2ae"><span class="section-number-2">10</span> Compare Mode Shapes</h2>
<div id="outline-container-org4275189" class="outline-2">
<h2 id="org4275189"><span class="section-number-2">10</span> Compare Mode Shapes</h2>
<div class="outline-text-2" id="text-10">
<p>
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 id="outline-container-org1ec0de2" class="outline-2">
<h2 id="org1ec0de2"><span class="section-number-2">11</span> <span class="todo TODO">TODO</span> Synthesis of FRF curves</h2>
<div id="outline-container-org4913088" class="outline-2">
<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 id="postamble" class="status">
<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>
</div>
</body>

View File

@ -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]].
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;
i_max = convhull(real(eigen_vector_M(:, mod_i)), imag(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
[[file:figs/modal_complexity_small.png]]
#+begin_src matlab :export none
#+begin_src matlab :exports none
mod_i = 8;
i_max = convhull(real(eigen_vector_M(:, mod_i)), imag(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
[[file:figs/modal_complexity_high.png]]
#+begin_src matlab :export none
#+begin_src matlab :exports none
modes_complexity = zeros(mod_n, 1);
for mod_i = 1:mod_n
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, :)));
#+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