Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab:沿未使用维度添加符号矩阵_Matlab_Symbolic Math - Fatal编程技术网

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

matlab:沿未使用维度添加符号矩阵,matlab,symbolic-math,Matlab,Symbolic Math,单元格数组中收集的符号矩阵如何沿未使用的维度求和?由于超出本文范围的原因,假设矩阵必须是单元数组的元素,而不是高维矩阵的平面。下面是这个问题的简要说明 假设我们有一个2Dsym向量的单元数组,如下所示: a = vpa(ones(2,2)); c = {a; 2*a; 3*a}; 尽管可以使用较新版本的matlab制作多维符号矩阵(例如,sym('c',[2])),但沿三维添加2Dsym矩阵失败 sum(cat(3, c{:}), 3) Error using symengine

单元格数组中收集的符号矩阵如何沿未使用的维度求和?由于超出本文范围的原因,假设矩阵必须是单元数组的元素,而不是高维矩阵的平面。下面是这个问题的简要说明

假设我们有一个2D
sym
向量的单元数组,如下所示:

a = vpa(ones(2,2));
c = {a; 2*a; 3*a};
尽管可以使用较新版本的matlab制作多维符号矩阵(例如,
sym('c',[2])
),但沿三维添加2D
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
编辑:

事实上,多维加法的问题比我想象的更普遍:
sum
不能应用于任何维度大于2的
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
更可取:

a=vpa(ones(2,2,2));
plus(a(:,:,1), a(:,:,2))
    [ 2.0, 2.0]
    [ 2.0, 2.0]
编辑#2:

根据,这个问题显然是不可避免的,因为没有明确提供对维度>2的支持

与MATLAB®sum不同,符号sum函数不适用于多维数组。有关详细信息,请参见MATLAB sum页面


尽管如此,关于替代方案的建议仍然是受欢迎的。

我只会使用循环,而不会回头看。不管怎样,符号矩阵处理起来很慢,我不会担心循环的开销可以忽略不计。@CrisLuengo:谢谢,我很感谢你的推荐。