【发布时间】:2018-07-27 05:08:45
【问题描述】:
我已经写了这段代码:
a = repelem(ones(7,8)-2.*eye(7,8), 7:-1:1, 1);
for i=1:7
a(i,i+1)=-1;
end
for i=8:13
a(i,i-5)=-1;
end
for i=14:18
a(i,i-10)=-1;
end
for i=19:22
a(i,i-14)=-1;
end
for i=23:25
a(i,i-17)=-1;
end
for i=26:27
a(i,i-19)=-1;
end
for i=28:28
a(i,i-20)=-1;
end
要产生这个矩阵:
-1 -1 1 1 1 1 1 1
-1 1 -1 1 1 1 1 1
-1 1 1 -1 1 1 1 1
-1 1 1 1 -1 1 1 1
-1 1 1 1 1 -1 1 1
-1 1 1 1 1 1 -1 1
-1 1 1 1 1 1 1 -1
1 -1 -1 1 1 1 1 1
1 -1 1 -1 1 1 1 1
1 -1 1 1 -1 1 1 1
1 -1 1 1 1 -1 1 1
1 -1 1 1 1 1 -1 1
1 -1 1 1 1 1 1 -1
1 1 -1 -1 1 1 1 1
1 1 -1 1 -1 1 1 1
1 1 -1 1 1 -1 1 1
1 1 -1 1 1 1 -1 1
1 1 -1 1 1 1 1 -1
1 1 1 -1 -1 1 1 1
1 1 1 -1 1 -1 1 1
1 1 1 -1 1 1 -1 1
1 1 1 -1 1 1 1 -1
1 1 1 1 -1 -1 1 1
1 1 1 1 -1 1 -1 1
1 1 1 1 -1 1 1 -1
1 1 1 1 1 -1 -1 1
1 1 1 1 1 -1 1 -1
1 1 1 1 1 1 -1 -1
我正在寻找一种更有效的方法来生成这个矩阵。一种方法是:
S=[-1 -1 1 1 1 1 1 1];
P=unique(perms(S),'rows');
但我根本不想使用排列,因为我想使用这段代码并制作更大维度的矩阵,而使用排列则不可能。
【问题讨论】:
标签: matlab matrix permutation