此代码生成矩阵n m,其中包含备用3和-3
n = 4;
m = 6;
M = zeros(m,n);
M(:,1) = 3*((-1).^(0:m-1).');
for ii = 2:n
M(:,ii) = (-1)^(ii+1)*M(:,1)
end
n = 4 m = 6
的结果 3 -3 3 -3
-3 3 -3 3
3 -3 3 -3
-3 3 -3 3
3 -3 3 -3
-3 3 -3 3
现在,我试图以这种方式将0替换为3,将-3替换为1:
M(M==3) = 0
M(M==-3) = 1
但我得不到我需要的东西,因为结果如下:
0 1 0 0
1 0 1 -1
0 1 0 0
1 0 1 -1
0 1 0 0
1 0 1 -1
如何用0和-3替换3?
答案 0 :(得分:2)
一种方式:
M = (sign(M) + 1)/2
另一个:
M = ~(M - 3)
但你的想法对我来说也很完美,你确定你是否正确地复制了它?
M(M== 3) = 0
M(M==-3) = 1
没有理由,为什么它不应该起作用。除了你如何产生它。所以可能会出现浮点问题。所以,首先要做的是:
M = round(M)
在没有循环的情况下生成矩阵的另一种方法可能是:
M = 3* bsxfun(@(x,y) 2*(~mod(x+y,2)-1/2),(1:m)',1:n)