我想在matlab中创建所需格式的矩阵。矩阵的格式如下。
1 -i 1 -i 1 -i
-1 i -1 i -1 i
1 -i 1 -i 1 -i
-1 i -1 i -1 i
矩阵的大小为256x256
我创建了一个程序,但它给了我一个错误。任何人都可以帮助我。
eff = [256 256];
表示p = 0:255 对于q = 0:255 如果mod(p,2)=='0' 如果mod(q,2)=='0' EFF(P,Q)= 1; 其他 EFF(P,Q)=(0-I); 端
else if mod(p,2)=='0' eff(p,q)=-1; else eff(p,q)=0+i end end end end
图(3)imagesc(eff); colormap grey;轴关;轴方形; PW0 = [256 256]; PW1 = [256 256]; PW2 = [256 256]; PW3 = [256 256];
for p=0:255 for q=0:255 if eff(p,q)=='1' PW0(p,q)=1 PW1(p,q)=0 PW2(p,q)=0 PW0(p,q)=0 else if eff(p,q)=='-i' PW0(p,q)=0 PW1(p,q)=-i PW2(p,q)=0 PW0(p,q)=0 else if eff(p,q)=='1' PW0(p,q)=0 PW1(p,q)=0 PW2(p,q)=-1 PW0(p,q)=0 else PW0(p,q)=0 PW1(p,q)=0 PW2(p,q)=0 PW0(p,q)=-i end end end end end
错误如下 ???试图访问eff(0,0); index必须是正整数或逻辑。
==>中的错误无标题为18 EFF(P,Q)= 0 + I
???试图访问eff(0,0); index必须是正整数或逻辑。
==>中的错误无标题为18 EFF(P,Q)= 0 + I
任何人都可以帮忙吗?
答案 0 :(得分:2)
您可以使用repmat
指令多次重复矩阵(http://www.mathworks.es/es/help/matlab/ref/repmat.html)
a = [1 -i; -1 i];
b = repmat(a,128,128);
下次再记得Matlab没有从0索引,它从1开始。这就是为什么你得到错误的原因"索引必须是正的"