matlab报错:无法执行赋值,因为左侧的大小为 1×1,右侧的大小为 1×2

代码如下:

clear;clc;
B=10000; 
s=100000; 
a=1000:100:11000; 
r=0:1000:100000; 

numA=length(a);
numB=length(r);
Sf=zeros(numA,numB); 

for i=1:numA
   for j=1:numB
     Sf(i,j)=(a(1:i).*a(1:i))./((1+0.5*20000*r(1:j)./(a(1:i)*a(1:i)))*2*0.5)+(B-s);
    end
end             

[a,r]=meshgrid(a,r); 
mesh(Sf); 
shading flat 

运行后报错,问题有两个:首先不清楚左右侧是指的什么,其次,运行后i的值为1,j的值为2,不理解为什么

希望有大佬可以帮忙解答

左侧指的是等号左边表达式  Sf(i,j) ,右侧指的是等号右边的表达式 (a(1:i).*a(1:i))./((1+0.5*20000*r(1:j)./(a(1:i)*a(1:i)))*2*0.5)+(B-s) 。

j的值为2的时候 r(1:j)就已经是二维的了,所以会出现等号左右两边维度不匹配的错误。

这句 Sf(i,j)=(a(1:i).a(1:i))./((1+0.520000*r(1:j)./(a(1:i)a(1:i)))20.5)+(B-s); 有问题
运行完 i=1,j=2 是因为,刚好运行到这一步时出现的问题。
应该将a和r里的冒号,改成逗号。即,改成 Sf(i,j)=(a(1,i).a(1,i))./((1+0.520000
r(1,j)./(a(1,i)*a(1,i)))20.5)+(B-s);
得到如下结果图

img

请问解决了吗?

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m