【问题标题】:Matlab Syntax Help .'*Matlab 语法帮助 .'*
【发布时间】:2016-11-26 22:12:30
【问题描述】:

我目前正在使用 Eigen 库将一些 Matlab 代码转换为 c++。 我得到了matlab代码,如下:

我有 2 个矩阵 N_RG_R

N_R 是一个 8 行 10 列的矩阵,而

G_R是一个8值向量的对角矩阵

有一个系统矩阵,其中包含术语N_R .' * G_R * N_R

我在使用这个术语时遇到了真正的麻烦,并且无法找到 . ' * 的这种组合实际上做了什么。

我猜这是某种转置和乘法,但我不断收到关于尺寸不匹配的错误。

【问题讨论】:

  • N_R . ' * G_R * N_R 不是有效的 MATLAB 语法。我几乎为你的困惑感到抱歉。
  • @AndrasDeak。好吧,唯一的问题是 .和 ',这可能是一个编辑问题。
  • @Johan 我同意。但这是我的思路:“哦,基本语法问题,由 10k 用户回答,bah。” --> “哦, MATLAB 代码是这样写的吗?恶魔,谁会做这种事?可怜的 OP。” --> “等一下,这甚至不是有效的 MATLAB 语法。那么为什么有人要求语法甚至不使用他们所询问的语法?”。 (我承认我的脾气暴躁可能受到 SO Docs 并发症的影响)

标签: c++ matlab matrix eigen


【解决方案1】:

如您所说,.' 是 MATLAB 中的 转置 运算符(注意:它不包含空格),而 *矩阵乘法。 p>

现在,让我们回顾一下其余部分(为了清楚起见,我冒昧地放了括号):

(N_R.') * (G_R) * (N_R)
  • N_R 是 8x10,所以 N_RT 是 10x8。
  • (N_R.') * (G_R) 是 10x8 * 8x8,所以是 10x8。
  • (N_R.') * (G_R) * N_R 因此是 10x8 * 8x10,所以是 10x10。

【讨论】:

    【解决方案2】:

    matlab 中的' 运算符执行矩阵共轭,而.' 执行简单转置,如Using transpose versus ctranspose in MATLAB 中所述。请注意,. ' 无效,但 .' 有效。

    N_R.' * G_R * N_R
    

    将与Eigen (Tutorial Matrix Arithmetic)

    N_R.transpose() * G_R * N_R
    

    感谢@Dev-iL 指出我在答案的原始版本中交换了两个含义

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多