我尝试从函数内部生成方波信号,通过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的函数。
任何帮助将不胜感激。谢谢。
答案 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);
...
可以改善一些事情,但结果仍然不完美。