【问题标题】:Using norm function in matlab on a subvector of a 3D vector在 3D 向量的子向量上使用 matlab 中的范数函数
【发布时间】:2018-05-10 09:08:54
【问题描述】:

我有一个名为 x 的向量,它是一个 3D 向量。 在我的代码中,我需要计算 x(1,1,:) 的范数(由 x(1,1,1), x(1,1,2),...组成的向量)。如果我尝试使用 norm(x(1,i,:)) 命令,Matlab 会返回错误“输入必须是 2-D”。我能做什么?

【问题讨论】:

  • 为什么 x(1,1,:) 不被视为一个数组?
  • 你可以应用squeeze来制作二维向量:norm(squeeze(x(2,3,:)))

标签: arrays matlab norm


【解决方案1】:

MATLAB 的norm 是一个“特殊”函数,它不像summean 等许多其他函数那样工作。

但是,vecnorm 的行为与这些函数类似。它沿第一个非单一维度计算范数,或者您可以指定沿哪个维度计算范数:

vecnorm(x(1,1,:))
vecnorm(x,2,3) % computes 2-norm for all vectors along 3rd dimension.

请注意,此功能是在 R2017b 中引入的。对于旧版本,您可以使用 sqrt(sum(x.^2,3)) 模拟行为。

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 2014-07-19
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    相关资源
    最近更新 更多