while循環matlab题目,关于matlab while循环

不好意思啊,这个是我完整的程序。while循环没有执行,工作区显示的参数temp矩阵里全部是0,如果执行了while循环的话,temp矩阵里面应该是很多1。主要您能帮我看看这while循环里嵌套的这个for循环是不是有问题啊?谢谢您了。

clear

load sig1.mat;

x = sig1;

fs=20000;

down_sample_rate=0.25;

windowWidth=151;

nfft=1024;

F=down_sample_rate*fs;

minF=500;

maxF=2500;

[tfr,t1,f1]= MySTFT(x',fs,down_sample_rate,windowWidth,nfft,minF,maxF);

c=tfr;

[B,A]=size(c);

N=floor(A*B/4000);

%生成N个Climber

temp=zeros(B,A);%同型的度量矩阵

% for i=1:1:A*B

%    if mod(i,4)==0

%       temp(i)=1;

%    end

% end

T=max(max(c))-min(min(c));%系统初始化温度

Tt=T; %系统当前温度

t=2; %系统当前时间

%  for i=4000:4000:A*B %对每个climber做移动

while Tt>=T/1000%对时间t做循环

%  i=4000:4000:A*B %对每个climber做移动

for i=4:4:A*B %对每个climber做移动

if mod(i,B)==0

heng=mod(i,B)+B;

else

heng=mod(i,B);

%计算climber的横坐标

zong=ceil(i/B); %计算climber的纵坐标 通过这两两句就定义了climber的坐标

end

p=sign(2*rand-1); %横坐标以0.5的等概率分别向左和右移动%这个是移动的长度

if heng==1

p=1;

elseif heng==B

p=-1;

end %排除边界条件

heng_new=heng+p;%不是边界条件的情况下按照这个公式进行移动

%纵坐标按规则移动

%       p=sign(2*rand-1);

if zong==1

p=1;

elseif zong==A

p=-1;

end %排除边界条件

zong_new=zong+p;%不是边界条件的情况下按照这个公式进行移动

if c(heng_new,zong_new)>c(heng_new,zong)

temp(heng,zong)=0;

temp(heng_new,zong_new)=1;

else

pt=exp((c(heng_new,zong_new)-c(heng_new,zong))/Tt);

if(rand<=pt)

zong_new=zong+p;

temp(heng,zong)=0;

temp(heng_new,zong_new)=1;

else

zong_new=zong;

temp(heng,zong)=0;

temp(heng_new,zong_new)=1;

end

end

end

t=t+1;

Tt=T/log2(t);

end

figure;

[row,col,v]=find(temp==1);

plot(col,row);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值