2016-04-13 40 views
0

阵列中的位置从我以前的编码,这是我最新的一个.. 我想改变原来的方向2向正确的方向&在一个新的数字2出现在同一时间的3×3矩阵为什么原来的数字不会改变在maltab

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次出现。 但上面的编码并没有使原来的数字改变方向。

回答

1

当您致电circshift时,这并不会改变输入m。您需要重新分配至m调用circshift

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 
+0

哇..我完全忘了那..谢谢! – user6196619

相关问题