MATLAB - 在ODE15s函数中生成方波信号?

时间:2015-06-02 10:58:52

标签: matlab signals solver ode

我尝试从函数内部生成方波信号,通过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函数中实现square函数?我需要函数内部的值,因此无法从运行脚本中调用它,因为它是时间t的函数。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

部分答案:如果你放行

fprintf('%g\t%g\n', t, y)

进入您的函数test,您会看到解算器仅在t y的值为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会这样做。使用public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); ... 可以改善一些事情,但结果仍然不完美。