MATLAB中如何将矩阵全部数值用for计算替换掉?

我写了一个代码,不能运行,请大神看看错误。我想将步长为1的矩阵求出他们与原点X1,Y1到距离,然后通过判断替换掉。closeallm=2000;n=2000;c=1;IR... 我写了一个代码,不能运行,请大神看看错误。我想将步长为1的矩阵求出他们与原点X1,Y1到距离,然后通过判断替换掉。
close all
m=2000;
n=2000;
c=1;
IR1=3.28*10^(-10);
IR2=9.84*10^(-11);
IR3=3.28*10^(-11);
r1=39.84;
r2=101.7;
r3=182.8;
x1=700;
y1=700;
A=zeros(m/c,n/c);
for f=1:n/c
x=f;
for g=1:m/c
y=g;
r=sqrt((x-x1/c)^2+(y-y1/c)^2);
if r<=r1/c
A(g,f)=IR1
else if(r1/c<r)&&(r<=r2/c);
A(g,f)=IR2
else if(r2<r/c)&&(r<=r3/c )
A(g,f)=IR3
else
A(g,f)=0;
end;
end;
end;
end;
end;
mesh(A);axis off;
展开
 我来答
lhmhz
高粉答主

2021-01-23 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17008

向TA提问 私信TA
展开全部

分析了题主的代码,基本过程没有多大的错误。如c作为步长的话,所以在多次出现(/c),好像不合理。应这样写:

A=zeros(m/c,n/c) 改写为 A=zeros(m,n) 

f=1:n/c 改写为 f=1:c:n

g=1:m/c 改写为 g=1:c:m

r=sqrt((x-x1/c)^2+(y-y1/c)^2) 改写为 r=sqrt((x-x1)^2+(y-y1)^2) 

r<=r1/c 改写为 r<=r1

(r1/c<r)&&(r<=r2/c)  改写为  (r1<r)&&(r<=r2)

(r2<r/c)&&(r<=r3/c)  改写为  (r2<r)&&(r<=r3)

按上述修改,可以出图。



推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式