我是MATLAB的新手,我试图使用ode45()
函数集成两个函数。我的代码:
[w,x] = ode45( @(w,x) ( TSII - TFII ) * w , [0 2], 0 );
TSII
和 TFII
是包含我的两个函数值的列向量1x151。 w
还没有任何价值,但我已经尝试将其设为一个充满零长度1x151的列向量,但这并没有解决我的问题。
我收到以下错误消息:
@(W,X)(TSII-TFII)*W returns a vector of length 151, but the length of initial conditions vector is 1
。
@(W,X)(TSII-TFII)*W
返回的向量和初始条件向量必须具有相同数量的元素。
是否可以将初始条件向量更改为与TSII
和TFII
相同的长度?
或者,我应该使用内部带有ode45()
的循环来制作151个值吗?
答案 0 :(得分:0)
我猜了一下,但试一试:
ode45()
希望您的匿名函数@(w,x)
在位置x
处插入函数值。如果TSII和TFII在写入时是表格函数值,则不会返回预期结果。
您应该使用[interp1][1](TSII,x)
而不是TSII
之类的内容。你的功能应该如下:
@(w,x) ( interp1(TSII,x) - interp1(TFII,x) ) .* w
还要注意元素明智乘法的.*
。