Finding Angular Frequency of an Oscillation
56 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Macaulay Wright
am 31 Mär. 2020
Kommentiert: Star Strider
am 31 Mär. 2020
I have currently produced a code to plot a Van der Pol oscillator, I can calculate the period by physically looking at the graph, but I am unsure on how to do this using a MATLAB code to get a result digitally.
My main focus is to get a printed value for the angular frequency (w - omega), so my first thought was to calculate the period and then use the equation w = (2pi/T).
Please can I get some guidance on producing a small script to calculate angular frequency? (w = 1 with the current model)
I have attached the code for the oscillation below.
Thanks in advance.
% simulation parameters
DT = 0.01; % Time step
N = 10000; % number of discrete time points
% Equation parameter
mu = 0.1;
% declare array to store discrete time samples
x = zeros(1,N);
% set boundary conditions
x(1) = -0.01;
x(2) = 0.0;
% Simulate using recurrance relation
for i = 3:N
phi = mu*DT/2*(x(i-1)^2-1);
x(i) = x(i-1)*(2-DT^2)/(1+phi) - x(i-2)*(1-phi)/(1+phi);
end
% plot
plot((1:N)*DT,x,'r')
% Calculating angular frequency
0 Kommentare
Akzeptierte Antwort
Star Strider
am 31 Mär. 2020
Likely the easiest way would be to find the times of the positive peaks, then calculate from there:
[pks,pktimes] = findpeaks(x, (1:N)*DT);
Period = mean(diff(pktimes))
The findpeaks function requires the Signal Processing Toolbox. A similar function is islocalmax, introduced in R2017b. (There are still other ways if you have neither of these functions.)
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Design Condition Indicators Interactively finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!