为什么原来的数字在maltab数组中的位置不变



来自我以前的编码,这是我的最新编码。。我想把原来2的方向改为右方向&同时在3x3矩阵中出现一个新的数字2

 m=zeros(3); m(randi(numel(m)))=2 

ans=

0 0 0
0 0 0
2 0 0

这是最初2的预期随机答案之一,然后我选择方向

case 'right'
   %number= find(m);
   if (m>=7);
     circshift(m,[0 0]);
        m_subset = setdiff(find(m),numel(m));
         m(randi(numel(m))) = 2   
         count=0;
   elseif (m>=4) | (m<=6);
      circshift(m,[0 1]);
        m_subset = setdiff(find(m),numel(m));
        m(randi(numel(m))) = 2
   elseif (m<4);    
      circshift(m,[0 2]);
        m_subset = setdiff(find(m),numel(m)) ;
        m(randi(numel(m))) = 2
   else
       msgbox('next');
   end

预期的答案是

0 0 0
0 2 0
0 0 2

其中原始数字2向右移动&出现随机2。但是上面的编码并没有使原来的数字改变方向。

当您调用circshift时,这不会改变输入m。在调用circshift之后,您需要重新分配给m

m = circshift(m, [0, 2]);

同样,对于条件句,您应该比较number而不是m。不过,我将使用find的第二个输出来计算列并使用它。

[r,c] = find(m);
%// If column 1
if c == 1
    %// do thing
elseif c == 2
    %// do other thing
else
    %// do yet another thing.
end

最新更新