matlab:沿未使用的维添加符号矩阵

时间:2019-03-23 00:20:14

标签: matlab symbolic-math

如何沿未使用的维度对在单元阵列中收集的符号矩阵求和?出于种种原因,假定矩阵必须是单元阵列的元素,而不是高维矩阵的平面。接下来是对该问题的简要演示。

假设我们有一个二维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页面。

尽管如此,仍然欢迎有关替代方法的建议。

0 个答案:

没有答案