【问题标题】:Summing a 3D symbolic Matrix对 3D 符号矩阵求和
【发布时间】:2016-02-01 02:07:03
【问题描述】:

我有一个 12x12x12 的符号矩阵,我想沿第二维求和以生成一个 12x12 的矩阵。通常,我会使用 sum() 命令执行此操作,如下所示:

总和(矩阵,2)

但是,对于符号矩阵,这会引发“输入参数必须是二维的”错误。

是否有我应该使用的解决方案或解决方法?

【问题讨论】:

  • 也许你可以对 1x12x12 个子矩阵求和?作为评论,通常使用具有特定符号条目的矩阵并不是最好的方法。可能有一种方法可以重写你的代码来避免这个问题。无论如何都要考虑一下。
  • 如果答案已经解决了您的问题,请点击复选标记考虑accepting it。这表明您已经找到了解决方案,这不再是一个悬而未决的问题。如果您的问题没有得到解答,请说明缺少的内容。

标签: matlab matrix sum


【解决方案1】:

这重新实现了更多维度的总和:

function M=sumnd(M,dim)
s=size(M);
M=permute(M,[setdiff(1:ndims(M),dim),dim]);
M=reshape(M,[],s(dim));
M=sum(M,2);
s(dim)=1;
M=reshape(M,s);
end

我使它与sum 一致,在你的情况下它返回一个 [12 1 12] 数组。要获得 [12 12] 矩阵,请应用挤压。

【讨论】:

  • 这很好用,谢谢。我认为 M=squeeze(reshape(M,s));应该包含在答案的最后一行,以便与标准 sum() 函数的作用保持一致。
  • @Meru Bhanot:我不同意,使用像 size(sum(rand(3,3,3))) 这样的简单示例,您可以清楚地看到内置 sum 的行为类似于我的答案中的代码。
猜你喜欢
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
相关资源
最近更新 更多