2015-04-28 120 views
1

代碼如下。更改matlab中矩陣的兩列

a=0; 
>> b=[4 0]; 
>> a([2,1])=b 

答案是:

a=[0 4]. 

我的問題是:爲什麼我們可以改變矩陣大小的時候,我們進行分配(因爲的原始尺寸爲1 1和現在a的大小是1乘2)?非常感謝您的時間和關注。

回答

0

當您最初分配a爲單個數字(1乘1)時,嘗試訪問索引a([2,1])應該讓您的索引超出矩陣維數,因爲a是1乘1。然而,Matlab處理問題是,當你重新分配b等於a的某個索引時,該索引被分配並且a的結構也被改變。只要數據符合,就可以執行(:,1)= b或任何其他索引。

如果

b = [0 4; 4 0]; 

其是2點維的數據,則就不能做([2,1])= B,因爲分配的索引爲1米的尺寸。但是,您可以通過執行以下操作爲b分配2維索引:

a(:,:,1)=b