MATLAB中积分函数的乘法误差

MATLAB中积分函数的乘法误差,matlab,matrix-multiplication,integral,Matlab,Matrix Multiplication,Integral,我想写一个函数,它使用sin(x)和cos(x)函数的组合,然后将其积分得到一个标量值。然而,当我运行代码时,我得到一个错误,即矩阵的维数在积分函数中不匹配,但它们实际上匹配。我将1x2矩阵与2x1矩阵相乘。我应该得到乘法的标量值。你能帮忙吗 y = zeros(2,2); y(1,1) = 100; y(1,2) = 5; y(2,1) = 200; y(2,2) = 10; fun = @(x) ([sin(x) cos(x)] * [y(:,1) - y(:,2)]); q = int

我想写一个函数,它使用sin(x)和cos(x)函数的组合,然后将其积分得到一个标量值。然而,当我运行代码时,我得到一个错误,即矩阵的维数在积分函数中不匹配,但它们实际上匹配。我将1x2矩阵与2x1矩阵相乘。我应该得到乘法的标量值。你能帮忙吗

y = zeros(2,2);
y(1,1) = 100;
y(1,2) = 5;
y(2,1) = 200;
y(2,2) = 10;

fun = @(x) ([sin(x) cos(x)] * [y(:,1) - y(:,2)]);

q = integral(fun,0,Inf);

我找到了解决这个问题的办法。我没有使用矩阵,而是将函数转换为标量形式。这样就不会产生乘法错误


fun=@(x)sin(x)*(y(1,1)-y(1,2))+cos(x)*(y(2,1)-y(2,2))

将文档读到
integral
,您将看到它同时调用了您的函数很多点,因此您的函数需要进行矢量化。下面的解决方案是可以的。