diff --git a/index.org b/index.org index e778e59..ede9ad5 100644 --- a/index.org +++ b/index.org @@ -1,12 +1,90 @@ -#+TITLE:Test of Cercalo +#+TITLE: Cercalo Test Bench :DRAWER: #+STARTUP: overview -#+HTML_HEAD: + +#+LANGUAGE: en +#+EMAIL: dehaeze.thomas@gmail.com +#+AUTHOR: Dehaeze Thomas #+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results output +#+PROPERTY: header-args:matlab+ :results none #+PROPERTY: header-args:matlab+ :exports both #+PROPERTY: header-args:matlab+ :eval no-export #+PROPERTY: header-args:matlab+ :output-dir figs +#+PROPERTY: header-args:matlab+ :tangle matlab/frf_processing.m +#+PROPERTY: header-args:matlab+ :mkdirp yes :END: + + +* Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) + <> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes + <> +#+end_src + +* Identification of the Plant +#+begin_src matlab + fs = 1e4; + Ts = 1/fs; +#+end_src + +We generate white noise with the "random number" simulink block, and we filter that noise. + +#+begin_src matlab + Gi = (1)/(1+s/2/pi/100); +#+end_src + +#+begin_src matlab :results output replace + c2d(Gi, Ts, 'tustin') +#+end_src + +#+RESULTS: +#+begin_example +c2d(Gi, Ts, 'tustin') + +ans = + + 0.030459 (z+1) + -------------- + (z-0.9391) + +Sample time: 0.0001 seconds +Discrete-time zero/pole/gain model. +#+end_example + +#+begin_src matlab + load('mat/data_001.mat', 't', 'ux') +#+end_src + +#+begin_src matlab + figure; plot(t, ux) +#+end_src + +#+begin_src matlab + [tf_est, freqs] = tfestimate(ux, yx, hanning(ceil(length(ux)/10)), [], [], fs); + + % h = idfrd(tf_est, freqs*2*pi, Ts); +#+end_src + +#+begin_src matlab +figure; +ax1 = subplot(2, 1, 1); +hold on; +plot(freqs, abs(tf_est),'--') +set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); +ylabel('Amplitude [m/N]'); +hold off; + +ax2 = subplot(2, 1, 2); +hold on; +plot(freqs, mod(180+180/pi*phase(tf_est), 360)-180,'--') +set(gca,'xscale','log'); +ylim([-180, 180]); +yticks([-180, -90, 0, 90, 180]); +xlabel('Frequency [$Hz$]'); ylabel('Phase [deg]'); +hold off; +#+end_src