Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 目标函数的二重积分_Matlab_Syntax Error_Integral - Fatal编程技术网

Matlab 目标函数的二重积分

Matlab 目标函数的二重积分,matlab,syntax-error,integral,Matlab,Syntax Error,Integral,我想使用内置函数integral2计算目标函数(名为myfunction,见下文)的二重积分 我试着运行这个脚本 f = @(r,theta) myfunction(r,theta); integral2(f,0,2,0,2*pi); 其中myfunction是以下函数: function fkt=myfunction(r,theta) x=r.*cos(theta); y=r.*sin(theta); los(:,1)=x; los(:,2)=y; norm = (sum( sqrt( lo

我想使用内置函数
integral2
计算目标函数(名为
myfunction
,见下文)的二重积分

我试着运行这个脚本

f = @(r,theta) myfunction(r,theta);
integral2(f,0,2,0,2*pi);
其中
myfunction
是以下函数:

function fkt=myfunction(r,theta)
x=r.*cos(theta);
y=r.*sin(theta);
los(:,1)=x;
los(:,2)=y;
norm = (sum( sqrt( los(:,1).^2 + los(:,2).^2)));
fkt=norm*r;
end
我在极坐标系下做积分,这就是为什么fkt=norm*r

Matlab向我提供了以下错误消息:

>> untitled2
Subscripted assignment dimension mismatch.

Error in myfunction (line 8)
los(:,1)=x;

我想不出问题出在哪里

x是一个矩阵,您可以尝试将其分配给列向量。

有两件事可以改进:

  • 服务水平
    未定义
  • los(:,1)
    是一列,而
    x
    是一行,因此分配必须失败
  • 您可以通过定义
    los
    并更改分配来纠正此问题。例如:

    los = NaN(numel(r), 2);
    los(:,1) = x';
    los(:,2) = y';
    
    但是,为什么需要变量
    服务水平
    ?只需将其删除,错误就会消失:

    function fkt=myfunction(r,theta)
    x=r.*cos(theta);
    y=r.*sin(theta);
    norm = (sum( sqrt(x.^2 + y.^2)));
    fkt=norm*r;
    end
    

    最好的,

    我明白了。。。我尝试了以下方法:los(:,1)=x',但它给出了相同的错误消息。我编辑了答案。尝试使用matlab的调试功能查看数据。查看
    los
    无需定义。在matlab中,它是隐式定义的。而且x是一个矩阵,所以你的例子不起作用。谢谢Ratbert。我尝试了第二种解决方案,得到了以下结果:>>untitled2{警告:当使用不同大小的输入矩阵在两个单独调用中提供相同的输入值时,被积函数的输出与所需的公差不匹配。请检查函数是否已正确向量化。>在integral2Calc>integral2t/张量中(第247行)在integral2Calc>integral2t(第55行)中的integral2Calc(第9行)中的integral2(第106行)中的untitled2(第5行)}当我尝试第一个解决方案(定义服务水平)时,我得到了以下错误:下标分配维度不匹配。myfunction(第5行)服务水平错误(:,1)=x'@第二种解决方案的Elias:添加尺寸(los)和尺寸(x)-无
    打印尺寸-就在错误行之前并比较结果。@是的,我知道。我只是给一个新手一些编码建议。