【问题标题】:matlab select vector from matrix and hide single dimensionsmatlab从矩阵中选择向量并隐藏单个维度
【发布时间】:2012-06-23 14:30:59
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: performance matlab vector matrix slice


    【解决方案1】:

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

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

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

    【讨论】:

    • 这个和squeeze的速度差是多少?
    【解决方案2】:

    您还可以排列尺寸以将非单件放在前面。要么:

    >> 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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 2014-07-27
      • 1970-01-01
      相关资源
      最近更新 更多