This commit is contained in:
Thomas Dehaeze 2019-09-10 16:36:26 +02:00
commit 113e354957

View File

@ -1,12 +1,90 @@
#+TITLE:Test of Cercalo #+TITLE: Cercalo Test Bench
:DRAWER: :DRAWER:
#+STARTUP: overview #+STARTUP: overview
#+HTML_HEAD: <script type="text/javascript" src="../js/readtheorg.js"></script>
#+LANGUAGE: en
#+EMAIL: dehaeze.thomas@gmail.com
#+AUTHOR: Dehaeze Thomas
#+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+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+ :exports both
#+PROPERTY: header-args:matlab+ :eval no-export #+PROPERTY: header-args:matlab+ :eval no-export
#+PROPERTY: header-args:matlab+ :output-dir figs #+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:matlab+ :tangle matlab/frf_processing.m
#+PROPERTY: header-args:matlab+ :mkdirp yes
:END: :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)
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
<<matlab-init>>
#+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