1

如何选择矩阵的某些部分并切割单个维度?

示例:B = zeros(100,100,3,'double');

当我选择 B(2,3,:) 时,我得到一个1x1x3矩阵作为结果 - 这不是预期的结果,因为对于某些操作(如 norm),我需要一个向量作为结果。为了处理这个问题,我使用squeeze了 ,但是这个操作似乎非常耗时,尤其是在大量使用的时候。

如何仅选择矢量并“剪切”单个维度?

4

2 回答 2

3

在您的情况下,您可以使用冒号运算符,如下所示:

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

这将 X 的所有元素放入元素数乘以 1 的向量中。

于 2012-06-23T14:50:34.783 回答
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

取决于您想要行向量还是列向量。

于 2012-06-23T22:04:11.030 回答