作者chinared (三尺秋水尘不染)
看板MATLAB
标题Re: [问题]新手请教while loop
时间Mon May 21 00:33:53 2012
不好意思~我尝试之後发现一直无法执行将R存成R0这一步
不知道是哪里有错误,可否请版上高手再指点一下呢?
非常感谢!
以下是我的程式码~
while R0>=50
<这边是计算R的值,R0也是用同样的方法得到>
Fkb=fft2(b);
Fkb2=abs(Fkb);
Fkb3=Fkb2.^2;
R1=sum(sum(Fkobs3))*sum(sum(Fkb3)); %Calculate discrepancy R
R2=sum(sum(Fkobs2.*Fkb2))^2;
R3=sum(sum(Fkb3));
R=(R1-R2)/R3
%若R比上一回圈的R小时,将R存成R0,此外再乱数选矩阵另一元素改值。
if R<=R0
c1=ceil(numel(b)*rand)
switch b(c1)
case 0
b(c1)=1
case 1
b(c1)=0
end
else
R0=R %问题:若加上if叙述,则无法成功执行R0=R,但若执行R0=0却可以
switch b(c)
case 0
b(c)=1
case 1
b(c)=0
end
end
end
※ 引述《chinared (三尺秋水尘不染)》之铭言:
: 各位高手好~小弟是matlab新手,初次来此请教:
: 我现在要处理的问题是这样:
: 我写了一个while loop
: while R>=100
: {中间是根据一个matrix计算R的过程}
: end
: 整个过程是将matrix元素逐次更动
: 因为我想要让R在跑loop中越来越小
: 所以需要将每次算完的R值和前一次比较
: 如果R值较小的话就固定此元素,再更改下一个元素
: 最後达到理想的R值
: 目前主要卡关的问题是:
: 如何取出每次loop跑出的R值,再将他和前一次比较呢?
: 不知道这样描述够不够清楚
: 有需要的话我再把程式码po 上来
: 谢谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 119.14.77.32