作者:
pipidog (如果狗狗飛上天)
2014-10-26 02:03:17※ 引述《dNchOmiu (浩)》之銘言:
: 之前看別人的code看到
: a=[]
: 想了很久不知道是什麼
: Google也找不太到(不知道要用什麼關鍵字搜這樣)
: 感覺上有點像是零向量
: 請問各位有人知道這是什麼用法嗎
: 謝謝
空矩陣就是宣告一個矩陣,內容是空的. 這是一個很常用的技巧.
他對於stack類的問題很方便.也就是你要把資料層層堆疊,但是
不知道要做多少筆資料,也不清楚每一筆資料的大小時非常有效.
例如:
a=[]
for n=1:100
if mod(n,3)==0
a=cat(2,a,ones(1,n))
end
end
這個程式我要求,只要可以被三整除的數字,就創造一個大小是
n的列向量.所以我每一次要塞進去的資料的大小完全是動態的,
對於這個程式,當然總共有多少筆,我是可以算啦.但是如果是複
雜一點的資料,要算就不這麼容易了.
當然上面的程式可以有很多寫法啦,但我想示範的是,你想把
一些資料做堆疊,但是你根本搞不清楚接下來要堆疊的資料,到
底有多少筆,也不清楚有多大. 所以你沒辦法先宣告一個確定
大小的矩陣.所以只能先宣告一個空矩陣,讓電腦先配置這樣一
個空的籃子,接著你就可以一筆一筆地把資料放進去.
例如本例中,在迴圈中進行資料的串接.如果你沒有先宣告a=[],
這個做法自然就走不下去了.
當然宣告空矩陣的用途很多.但是最常用的應該還是要堆疊資料
的時候.例似的語法其實在其他語言中也普遍存在,編譯式語言,
如fortran是透過allocate達成,Python中用法就跟Matlab類似.
目的都是一樣,讓你對記憶體的動態使用更具彈性.