2014-11-04 67 views
0

首先代碼:誰能告訴我,爲什麼這兩個碼給出不同的答案

kk8 = (kk1(:,:) .* (reshape((kk2(c,:,:)),12,6))); 
kk8(isnan(kk8))=0; 

其中size(kk8)回報

ans = 

    12  6 


二碼:

size(kk8(isnan((kk1(:,:) .* (reshape((kk2(c,:,:)),12,6)))))=0); 

我做一些人在這裏欺騙,看看會發生什麼 - 我認爲它會是一樣的,但現在size(kk8)回報

ans = 

    1  60 

回答

1

你正在做類似如下(以數組的大小)在你的第一個例子:

kk8=kk1; 
kk8(isnan(kk1))=0; 

而在第二個例子中,你正在做的事情一樣

kk8(isnan(kk1))=0; 

我假設kk8先前沒有定義。

在第一個示例中,您將創建與kk1大小相同的數組kk8,然後修改某些元素。在你的第二個例子中,你創建kk8作爲kk1中對應於NaN的數字的向量零。這就是爲什麼他們會有不同的大小,因爲它們的創建方式不同。

+0

我該怎麼做才把它放在一行? – user2604811 2014-11-04 01:41:16

+1

@ user2604811將它作爲兩行!我不知道你會如何做到這一點,並沒有真正的理由。 – David 2014-11-04 02:39:31

相關問題