2012-06-23 46 views
1

如何選擇矩陣的某些部分並剪切單個維度?例如:B =零(100,100,3,'double');matlab從矩陣中選擇向量並隱藏單個維度

當我選擇B(2,3,:)我得到一個1x1x3矩陣作爲結果 - 這不是預期的結果,因爲對於某些操作(如規範),我需要一個向量作爲結果。爲了解決這個問題,我使用了squeeze,但是這個操作似乎非常耗時,特別是在大量使用時。

如何只選擇矢量並「剪切」單個維度?

回答

3

你的情況,你可以使用冒號運算符,就像這樣:

x = B(2,3,:); 
x = x(:); 

這1個矢量X的所有元素放入數的元素。

+0

這個和'squeeze'之間的速度差是多少? – tmpearce

0

您也可以對這些尺寸進行排列,以便將非單身人員放在前面。或者:

>> permute(B(2,3,:),[3 1 2]) 
ans = 
     0.97059 
     0.69483 
     0.2551 

>> permute(B(2,3,:),[1 3 2]) 
ans = 
     0.97059  0.69483  0.2551 

取決於你是否希望有一個行或列向量。