matlab连接的矩阵的维数不一致

时间:2014-12-09 20:22:09

标签: matlab matrix

这是我的代码:

C=@(k) [k,k,2.*k;3,2.*k,5;1,k,k];

AV=@(k,t) [3*t, 6, 9]*C(k)*[3*t ;6 ;9];

avaint=@(k,a,b) quadgk(@(k) AV(k,t),a,b);

AVAR=@(t) avaint(t,0,87600);

是节目:

Error using vertcat
Dimensions of matrices being concatenated are not consistent.

当我想要打印AVAR(3)

1 个答案:

答案 0 :(得分:0)

错误来源

quadgk函数将积分点向量传递给给定的函数句柄。 来自documentation

  

函数y = fun(x)应接受向量参数x并返回向量结果y,其中y是在x的每个元素处计算的被积函数。

这会导致尺寸不匹配,从而导致错误。

解决方案

要解决此实现问题,您可以使用integral函数和('ArrayValued'true)选项对执行数值积分:

avaint = @(t,a,b) integral(@(k) AV(k,t),a,b,'ArrayValued',true);

或者,您可以在AV中使用arrayfun来遵守quadgk的要求:

AV = @(k,t) arrayfun(@(k_el) [3*t, 6, 9]*(C(k_el)*[3*t ;6 ;9]),k);