如何找到非线性信号的总谐波失真。使用matlab
How can I find the total harmonic distortion of a nonlinear signal. Using matlab
如何找到非线性信号的总谐波失真。例如,代码如下所示的 Forced Van der pol 振荡器。我已经在 matlab 中尝试了 'thd' 函数,但我想我遗漏了一些东西。
这是等式
x''-mu(1-x^2(t))x'(t)+x(t)=Pcos(w*t)
function vdpo()
t=0:0.001:10
mu=2
x0=-2;
v0=2;
p=10; w=7;
[t,x]= ode45(@f, t, [x0,v0])
function dxdt=f(t,x)
dxdt1=x(2); dxdt2= mu(1-x(1)^2)*x(1)+p*cos(w*t);
dxdt=[dxdt1 ;dxdt2];
end
end
试试下面的代码,其中函数 f(t,x)
是我们的 ODE 方程,我们调用函数 ode45
使用 Runge-Kutta 方法求解它。
function [x]=vdpo()
t=0:0.001:10
mu=2
x0=-2;
v0=2;
p=10; w=7;
[t,x]= ode45(@f, t, [x0,v0])
function dxdt=f(t,x)
dxdt1=-x(2)-x(1)+(x(1)^3)/3; dxdt2=-x(1)+p*cos(w*t);
dxdt=[dxdt1 ;dxdt2];
end
end
然而,它实际上是一道数学题而不是编程题。我们要做的第一件事是通过定义 y=x'+((x^3)/3-x)*mu
将方程式转换为更方便的形式,然后我们有 2 First Order Ordinary Differential Equations
所以我们可以调用 ode45
来解决它。我在 here(page2).
浏览了它们
通过调用
X=vdpo();
x=X(:,1);
thd(x)
我们可以得到这样的答案:
p.s。不确定 THD 部分。
如何找到非线性信号的总谐波失真。例如,代码如下所示的 Forced Van der pol 振荡器。我已经在 matlab 中尝试了 'thd' 函数,但我想我遗漏了一些东西。 这是等式 x''-mu(1-x^2(t))x'(t)+x(t)=Pcos(w*t)
function vdpo()
t=0:0.001:10
mu=2
x0=-2;
v0=2;
p=10; w=7;
[t,x]= ode45(@f, t, [x0,v0])
function dxdt=f(t,x)
dxdt1=x(2); dxdt2= mu(1-x(1)^2)*x(1)+p*cos(w*t);
dxdt=[dxdt1 ;dxdt2];
end
end
试试下面的代码,其中函数 f(t,x)
是我们的 ODE 方程,我们调用函数 ode45
使用 Runge-Kutta 方法求解它。
function [x]=vdpo()
t=0:0.001:10
mu=2
x0=-2;
v0=2;
p=10; w=7;
[t,x]= ode45(@f, t, [x0,v0])
function dxdt=f(t,x)
dxdt1=-x(2)-x(1)+(x(1)^3)/3; dxdt2=-x(1)+p*cos(w*t);
dxdt=[dxdt1 ;dxdt2];
end
end
然而,它实际上是一道数学题而不是编程题。我们要做的第一件事是通过定义 y=x'+((x^3)/3-x)*mu
将方程式转换为更方便的形式,然后我们有 2 First Order Ordinary Differential Equations
所以我们可以调用 ode45
来解决它。我在 here(page2).
通过调用
X=vdpo();
x=X(:,1);
thd(x)
我们可以得到这样的答案:
p.s。不确定 THD 部分。