2014-04-08 59 views
0

我正在研究一個matlab程序,在這個程序中我創建了一個叫做'bots'的3x1001矩陣。我檢查了Matlab是否正確地創建了這個矩陣,但是一旦Matlab進入一個while循環,就會有一個額外的矩陣叫做1x1001的「機器人」,其中有不同的雙精度。爲什麼Matlab爲我的變量創建第二個幽靈般的實例?

... 

bots=zeros([3 1001]); 
bots(1,:)=botsStartPlace; 
bots(2,1:nbBots-1)=botsStartPlace(2:nbBots); 
bots(2,nbBots)=length(indexTable); 

whos bots % bots  3x1001   24024 double 

while(going) 

    whos bots %bots  3x1001   24024 double 
        %bots  1x1001    8008 double 
.... 

任何人都知道爲什麼matlab在做這個?這嚇我一跳! :P

+0

有趣的...你能發佈一個最小的工作示例,這種行爲嗎?另外,什麼版本的Matlab你運行? – 3lectrologos

+0

嗨,是的,我正在一個最小的例子。 R2012a(7.14.0.739),64位(maci64) –

+0

投票結束時給出[answer](http://stackoverflow.com/a/22947906/2778484)。 – chappjc

回答

0

我發現問題了!我的壞,從來沒有一個鬼! Matlab已經經歷了一次循環,並且將不同調用的「whos」輸出一起命令給該函數,這給我留下了多個實例在哪裏的印象。相反,我只是不小心傷害了循環中的矩陣,從而改變了它的尺寸!對不起,您的時間! :(

+2

可能更好地刪除問題。 :-) –

0

下面的代碼片段不創建一個 「幽靈」 實例:

bots = zeros(3, 1001); 

whos 

going = 2; 
while (going) 
    whos 
    going = going - 1; 
end 

輸出是:

bots  3x1001   24024 double    
going  1x1     8 double    

所以問題不能真正來自while -loop本身。

+0

是的,我知道但我只是不明白爲什麼matlab會有相同變量的不同實例我從來沒有遇到過這樣的事情,也不知道從哪裏開始尋找答案,但是當代碼由於某種奇怪的原因進入while循環時,問題就開始了。正常情況下,matlab會爲同一個變量創建多個實例嗎?對我來說,開始調試我的程序是一個很好的開始。 –

+0

@VincentPeeters你是認真的嗎? – blackbird

+0

是的,爲什麼?我錯過了明顯的東西嗎? –

相關問題