Re: [问题] 空矩阵?

楼主: 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类似.
目的都是一样,让你对内存的动态使用更具弹性.
作者: dNchOmiu (浩)   2014-11-01 15:34:00
感谢你的解答

Links booklink

Contact Us: admin [ a t ] ucptt.com