matlab矩阵赋值问题

for t=1:k
for i=1+2^t:2^(k+1)+m-2^t
for j=1+2^t:2^(k+1)+m-2^t
BM(i,j)=max([BM1(i-2^(t-1),j-2^(t-1)),BM1(i-2^(t-1),j+2^(t-1)),BM1(i+2^(t-1),j-2^(t-1)),BM1(i+2^(t-1),j+2^(t-1))]);%%当t=2时,把BM换成别的表达式的话,问题就解决了;
Bm(i,j)=min([Bm1(i-2^(t-1),j-2^(t-1)),Bm1(i-2^(t-1),j+2^(t-1)),Bm1(i+2^(t-1),j-2^(t-1)),Bm1(i+2^(t-1),j+2^(t-1))]);
end
end
BM1=BM;
Bm1=Bm;
end
这段程序里,我想的得到当t=k是的BM1,应该是跟t=1时的BM1不一样的,可是程序结果显示一样,怎么回事 啊,应该怎么改?这里k是一个常数,t=1时,循环里的BM1也是已知的;

第1个回答  2013-12-06
%以下程序已做修改,t=k时就是BM1{k},Bm1{k}
for t=1:k
for i=1+2^t:2^(k+1)+m-2^t
for j=1+2^t:2^(k+1)+m-2^t
BM(i,j)=max([BM1(i-2^(t-1),j-2^(t-1)),BM1(i-2^(t-1),j+2^(t-1)),BM1(i+2^(t-1),j-2^(t-1)),BM1(i+2^(t-1),j+2^(t-1))]);%%当t=2时,把BM换成别的表达式的话,问题就解决了;
Bm(i,j)=min([Bm1(i-2^(t-1),j-2^(t-1)),Bm1(i-2^(t-1),j+2^(t-1)),Bm1(i+2^(t-1),j-2^(t-1)),Bm1(i+2^(t-1),j+2^(t-1))]);
end
end
BM1{t}=BM;
Bm1{t}=Bm;
end追问

BM(i,j)=max([BM1(i-2^(t-1),j-2^(t-1)),BM1(i-2^(t-1),j+2^(t-1)),BM1(i+2^(t-1),j-2^(t-1)),BM1(i+2^(t-1),j+2^(t-1))]),这里边的BM1也的变化呢呀

追答

不好意思,刚才没看清楚你的循环体里面也有BM1,你要求的t=k时的BM1和Bm1,只需要在源程序后面加上两句代码如下:
for t=1:k
for i=1+2^t:2^(k+1)+m-2^t
for j=1+2^t:2^(k+1)+m-2^t
BM(i,j)=max([BM1(i-2^(t-1),j-2^(t-1)),BM1(i-2^(t-1),j+2^(t-1)),BM1(i+2^(t-1),j-2^(t-1)),BM1(i+2^(t-1),j+2^(t-1))]);%%当t=2时,把BM换成别的表达式的话,问题就解决了;
Bm(i,j)=min([Bm1(i-2^(t-1),j-2^(t-1)),Bm1(i-2^(t-1),j+2^(t-1)),Bm1(i+2^(t-1),j-2^(t-1)),Bm1(i+2^(t-1),j+2^(t-1))]);
end
end
BM1=BM;
Bm1=Bm;
end
BM1
Bm1
%直接在command窗口可以看到你要的BM1和Bm1

追问

还是不对啊,再帮忙看看啊

追答

你把整个程序补充完整,我再帮你看看。

相似回答
大家正在搜