我对MATLAB和im非常陌生,他们试图使用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个值吗?
发布于 2017-12-22 21:35:13
我猜有一点,但试试看:
ode45()希望您的匿名函数@(w,x)在x位置插入函数值。如果在编写时TSII和TFII是表格函数值,它将不会返回预期的结果。
您应该使用类似于interp1(TSII,x)的东西,而不是TSII。您的功能应该如下所示:
@(w,x) ( interp1(TSII,x) - interp1(TFII,x) ) .* w还请注意元素顺向乘法的.*。
https://stackoverflow.com/questions/47944810
复制相似问题