如何沿未使用的维度对在单元阵列中收集的符号矩阵求和?出于种种原因,假定矩阵必须是单元阵列的元素,而不是高维矩阵的平面。接下来是对该问题的简要演示。
假设我们有一个二维friend
向量的单元格数组,准备如下:
sym
尽管有可能使用较新版本的matlab(例如a = vpa(ones(2,2));
c = {a; 2*a; 3*a};
)制作多维符号矩阵,但沿三维添加2D sym('c', [2 2 2])
矩阵却失败了
sym
使用数字输入,操作成功:
sum(cat(3, c{:}), 3)
Error using symengine
Arguments must be 2-dimensional.
编辑:
实际上,多维加法的问题比我以前想象的要普遍得多:a = ones(2,2);
c = {a; 2*a; 3*a};
sum(cat(3,c{:}), 3)
6 6
6 6
不能应用于任何维数大于2的sum
矩阵。
sym
可以沿第三维手动添加平面,因此可以选择迭代添加,尽管a=vpa(ones(2,2));
sum(a,1)
[ 2.0, 2.0]
sum(a,2)
2.0
2.0
a = vpa(ones(2,2,2));
sum(a,1) % fails
sum(a,2) % fails
sum(a,3) % fails
是更可取的:
sum
编辑#2:
根据this page,由于显然未提供对维数> 2的支持,因此该问题显然是不可避免的。
与MATLAB®sum不同,符号求和函数不适用于多维数组。有关详细信息,请访问MATLAB sum页面。
尽管如此,仍然欢迎有关替代方法的建议。