MATLAB - 在 ODE15s 函数中生成方波信号?
MATLAB - Generate square signal in ODE15s function?
我正在尝试通过 ODE15s 求解器从函数内部生成方波信号,运行。问题是,输出不是方形的,而是线性的。
function dX = test(t ,X )
y = X (1) ;
a = 24;
dc = 50;
k = 2;
f=k*2*pi;
y=a*square(f*t,dc);
% derivative vector
dX = [ y ]';
运行脚本:
[t , X ]= ode15s ( @test ,[0 10] , [0]) ;
figure (1);
plot(t ,X)
有什么办法可以在ode函数里面实现平方函数吗?我需要函数内部的值,因此不能从 运行 脚本中调用它,因为它是时间的函数,t.
如有任何帮助,我们将不胜感激。谢谢你。
部分答案:如果你把行
fprintf('%g\t%g\n', t, y)
进入您的函数 test
,您将看到求解器仅在值为 t
时调用该函数,其中 y
为 24:
0 24
0 24
0 24
1.57072e-14 24
1 24
2 24
3 24
4 24
5 24
6 24
7 24
8 24
9 24
10 24
我不知道为什么 ode15s
会那样做。使用 ode45
可以改善一些情况,但结果仍然不完美。
我正在尝试通过 ODE15s 求解器从函数内部生成方波信号,运行。问题是,输出不是方形的,而是线性的。
function dX = test(t ,X )
y = X (1) ;
a = 24;
dc = 50;
k = 2;
f=k*2*pi;
y=a*square(f*t,dc);
% derivative vector
dX = [ y ]';
运行脚本:
[t , X ]= ode15s ( @test ,[0 10] , [0]) ;
figure (1);
plot(t ,X)
有什么办法可以在ode函数里面实现平方函数吗?我需要函数内部的值,因此不能从 运行 脚本中调用它,因为它是时间的函数,t.
如有任何帮助,我们将不胜感激。谢谢你。
部分答案:如果你把行
fprintf('%g\t%g\n', t, y)
进入您的函数 test
,您将看到求解器仅在值为 t
时调用该函数,其中 y
为 24:
0 24
0 24
0 24
1.57072e-14 24
1 24
2 24
3 24
4 24
5 24
6 24
7 24
8 24
9 24
10 24
我不知道为什么 ode15s
会那样做。使用 ode45
可以改善一些情况,但结果仍然不完美。