Tangle files
This commit is contained in:
		
							
								
								
									
										57
									
								
								index.org
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								index.org
									
									
									
									
									
								
							@@ -104,18 +104,28 @@
 | 
				
			|||||||
** Time Domain Data
 | 
					** Time Domain Data
 | 
				
			||||||
#+begin_src matlab
 | 
					#+begin_src matlab
 | 
				
			||||||
  figure;
 | 
					  figure;
 | 
				
			||||||
 | 
					  plot(t, y)
 | 
				
			||||||
  subplot(1,2,1);
 | 
					 | 
				
			||||||
  plot(data(:, 3), data(:, 1))
 | 
					 | 
				
			||||||
  ylabel('Input Voltage [V]'); xlabel('Time [s]');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  subplot(1,2,2);
 | 
					 | 
				
			||||||
  plot(data(:, 3), data(:, 2))
 | 
					 | 
				
			||||||
  ylabel('Output Displacement [m]'); xlabel('Time [s]');
 | 
					  ylabel('Output Displacement [m]'); xlabel('Time [s]');
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
** PSD of Measurement Noise
 | 
					** PSD of Measurement Noise
 | 
				
			||||||
 | 
					#+begin_src matlab
 | 
				
			||||||
 | 
					  Ts = t(end)/(length(t)-1);
 | 
				
			||||||
 | 
					  Fs = 1/Ts;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  win = hanning(ceil(1*Fs));
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src matlab
 | 
				
			||||||
 | 
					  [pxx, f] = pwelch(y, win, [], [], Fs);
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src matlab
 | 
				
			||||||
 | 
					  figure;
 | 
				
			||||||
 | 
					  plot(f, sqrt(pxx));
 | 
				
			||||||
 | 
					  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
				
			||||||
 | 
					  xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]');
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Transfer Function Estimation with m=5kg
 | 
					* Transfer Function Estimation with m=5kg
 | 
				
			||||||
:PROPERTIES:
 | 
					:PROPERTIES:
 | 
				
			||||||
@@ -125,7 +135,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
** Load Data
 | 
					** Load Data
 | 
				
			||||||
#+begin_src matlab
 | 
					#+begin_src matlab
 | 
				
			||||||
  load('./mat/huddle_test.mat', 't', 'u', 'y');
 | 
					  ht = load('./mat/huddle_test.mat', 't', 'u', 'y');
 | 
				
			||||||
 | 
					  load('./mat/apa95ml_5kg.mat', 't', 'u', 'y');
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
** Time Domain Data
 | 
					** Time Domain Data
 | 
				
			||||||
@@ -133,15 +144,39 @@
 | 
				
			|||||||
  figure;
 | 
					  figure;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  subplot(1,2,1);
 | 
					  subplot(1,2,1);
 | 
				
			||||||
  plot(data(:, 3), data(:, 1))
 | 
					  plot(t, u)
 | 
				
			||||||
  ylabel('Input Voltage [V]'); xlabel('Time [s]');
 | 
					  ylabel('Input Voltage [V]'); xlabel('Time [s]');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  subplot(1,2,2);
 | 
					  subplot(1,2,2);
 | 
				
			||||||
  plot(data(:, 3), data(:, 2))
 | 
					  plot(t, y)
 | 
				
			||||||
  ylabel('Output Displacement [m]'); xlabel('Time [s]');
 | 
					  ylabel('Output Displacement [m]'); xlabel('Time [s]');
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					** Comparison of the PSD with Huddle Test
 | 
				
			||||||
 | 
					#+begin_src matlab
 | 
				
			||||||
 | 
					  Ts = t(end)/(length(t)-1);
 | 
				
			||||||
 | 
					  Fs = 1/Ts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  win = hanning(ceil(1*Fs));
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src matlab
 | 
				
			||||||
 | 
					  [pxx, f] = pwelch(y, win, [], [], Fs);
 | 
				
			||||||
 | 
					  [pht, ~] = pwelch(ht.y, win, [], [], Fs);
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#+begin_src matlab
 | 
				
			||||||
 | 
					  figure;
 | 
				
			||||||
 | 
					  hold on;
 | 
				
			||||||
 | 
					  plot(f, sqrt(pxx), 'DisplayName', '5kg');
 | 
				
			||||||
 | 
					  plot(f, sqrt(pht), 'DisplayName', 'Huddle Test');
 | 
				
			||||||
 | 
					  hold off;
 | 
				
			||||||
 | 
					  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
				
			||||||
 | 
					  xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]');
 | 
				
			||||||
 | 
					  legend('locaation', 'norteast');
 | 
				
			||||||
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
** Compute TF estimate and Coherence
 | 
					** Compute TF estimate and Coherence
 | 
				
			||||||
#+begin_src matlab
 | 
					#+begin_src matlab
 | 
				
			||||||
  win = hann(ceil(1/Ts));
 | 
					  win = hann(ceil(1/Ts));
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								matlab/huddle_test.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								matlab/huddle_test.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					% Load Data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					load('./mat/huddle_test.mat', 't', 'u', 'y');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Time Domain Data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					figure;
 | 
				
			||||||
 | 
					plot(t, y)
 | 
				
			||||||
 | 
					ylabel('Output Displacement [m]'); xlabel('Time [s]');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% PSD of Measurement Noise
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ts = t(end)/(length(t)-1);
 | 
				
			||||||
 | 
					Fs = 1/Ts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					win = hanning(ceil(1*Fs));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[pxx, f] = pwelch(y, win, [], [], Fs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					figure;
 | 
				
			||||||
 | 
					plot(f, sqrt(pxx));
 | 
				
			||||||
 | 
					set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
				
			||||||
 | 
					xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]');
 | 
				
			||||||
							
								
								
									
										11
									
								
								matlab/run_experiment.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								matlab/run_experiment.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					% Load Data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					data = SimulinkRealTime.utils.getFileScopeData('data/apa95ml.dat').data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Save Data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					u = data(:, 1); % Input Voltage [V]
 | 
				
			||||||
 | 
					y = data(:, 2); % Output Displacement [m]
 | 
				
			||||||
 | 
					t = data(:, 3); % Time [s]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					save('./mat/huddle_test.mat', 't', 'u', 'y', 'Glpf');
 | 
				
			||||||
							
								
								
									
										9
									
								
								matlab/setup_experiment.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								matlab/setup_experiment.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					% Parameters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ts = 1e-4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Filter White Noise
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Glpf = 1/(1 + s/2/pi/500);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Gz = c2d(Glpf, Ts, 'tustin');
 | 
				
			||||||
							
								
								
									
										74
									
								
								matlab/tf_estimation.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								matlab/tf_estimation.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,74 @@
 | 
				
			|||||||
 | 
					% Load Data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ht = load('./mat/huddle_test.mat', 't', 'u', 'y');
 | 
				
			||||||
 | 
					load('./mat/apa95ml_5kg.mat', 't', 'u', 'y');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Time Domain Data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					figure;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					subplot(1,2,1);
 | 
				
			||||||
 | 
					plot(t, u)
 | 
				
			||||||
 | 
					ylabel('Input Voltage [V]'); xlabel('Time [s]');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					subplot(1,2,2);
 | 
				
			||||||
 | 
					plot(t, y)
 | 
				
			||||||
 | 
					ylabel('Output Displacement [m]'); xlabel('Time [s]');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Comparison of the PSD with Huddle Test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ts = t(end)/(length(t)-1);
 | 
				
			||||||
 | 
					Fs = 1/Ts;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					win = hanning(ceil(1*Fs));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[pxx, f] = pwelch(y, win, [], [], Fs);
 | 
				
			||||||
 | 
					[pht, ~] = pwelch(ht.y, win, [], [], Fs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					figure;
 | 
				
			||||||
 | 
					hold on;
 | 
				
			||||||
 | 
					plot(f, sqrt(pxx), 'DisplayName', '5kg');
 | 
				
			||||||
 | 
					plot(f, sqrt(pht), 'DisplayName', 'Huddle Test');
 | 
				
			||||||
 | 
					hold off;
 | 
				
			||||||
 | 
					set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
				
			||||||
 | 
					xlabel('Frequency [Hz]'); ylabel('ASD [$m/\sqrt{Hz}$]');
 | 
				
			||||||
 | 
					legend('locaation', 'norteast');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Compute TF estimate and Coherence
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					win = hann(ceil(1/Ts));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[tf_est, f] = tfestimate(data(:, 1), -data(:, 2), win, [], [], 1/Ts);
 | 
				
			||||||
 | 
					[co_est, ~] = mscohere(  data(:, 1), -data(:, 2), win, [], [], 1/Ts);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Coherence
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					figure;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					hold on;
 | 
				
			||||||
 | 
					plot(f, co_est, 'k-')
 | 
				
			||||||
 | 
					set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin');
 | 
				
			||||||
 | 
					ylabel('Coherence'); xlabel('Frequency [Hz]');
 | 
				
			||||||
 | 
					hold off;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					% Transfer Function
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					figure;
 | 
				
			||||||
 | 
					ax1 = subplot(2, 1, 1);
 | 
				
			||||||
 | 
					hold on;
 | 
				
			||||||
 | 
					plot(f, abs(tf_est), 'k-')
 | 
				
			||||||
 | 
					set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
 | 
				
			||||||
 | 
					ylabel('Amplitude'); xlabel('Frequency [Hz]');
 | 
				
			||||||
 | 
					hold off;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ax2 = subplot(2, 1, 2);
 | 
				
			||||||
 | 
					hold on;
 | 
				
			||||||
 | 
					plot(f, 180/pi*angle(tf_est), 'k-')
 | 
				
			||||||
 | 
					set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin');
 | 
				
			||||||
 | 
					ylabel('Phase'); xlabel('Frequency [Hz]');
 | 
				
			||||||
 | 
					legend();
 | 
				
			||||||
 | 
					hold off;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					linkaxes([ax1,ax2], 'x');
 | 
				
			||||||
 | 
					xlim([10, 5000]);
 | 
				
			||||||
		Reference in New Issue
	
	Block a user