如何選擇矩陣的某些部分並剪切單個維度?例如:B =零(100,100,3,'double');matlab從矩陣中選擇向量並隱藏單個維度
當我選擇B(2,3,:)我得到一個1x1x3
矩陣作爲結果 - 這不是預期的結果,因爲對於某些操作(如規範),我需要一個向量作爲結果。爲了解決這個問題,我使用了squeeze
,但是這個操作似乎非常耗時,特別是在大量使用時。
如何只選擇矢量並「剪切」單個維度?
如何選擇矩陣的某些部分並剪切單個維度?例如:B =零(100,100,3,'double');matlab從矩陣中選擇向量並隱藏單個維度
當我選擇B(2,3,:)我得到一個1x1x3
矩陣作爲結果 - 這不是預期的結果,因爲對於某些操作(如規範),我需要一個向量作爲結果。爲了解決這個問題,我使用了squeeze
,但是這個操作似乎非常耗時,特別是在大量使用時。
如何只選擇矢量並「剪切」單個維度?
你的情況,你可以使用冒號運算符,就像這樣:
x = B(2,3,:);
x = x(:);
這1個矢量X的所有元素放入數的元素。
您也可以對這些尺寸進行排列,以便將非單身人員放在前面。或者:
>> 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
取決於你是否希望有一個行或列向量。
這個和'squeeze'之間的速度差是多少? – tmpearce