【MATLAB】高维矩阵求和

您所在的位置:网站首页 matlab计算累乘求和 【MATLAB】高维矩阵求和

【MATLAB】高维矩阵求和

2023-10-18 20:57| 来源: 网络整理| 查看: 265

前言

之前就写过一篇关于高维矩阵求和的,现在再看的话,写得不是很清楚。

高维矩阵的求和 a=ones(2,3,4,5) a(:,:,1,1) = 1 1 1 1 1 1 a(:,:,2,1) = 1 1 1 1 1 1 a(:,:,3,1) = 1 1 1 1 1 1 a(:,:,4,1) = 1 1 1 1 1 1 a(:,:,1,2) = 1 1 1 1 1 1 ......

这样是创建了一个4维的矩阵。

sum(a,n)应该这样理解:a是目标矩阵,n是待求和的维度。显然n的取值范围是1 2 3 4。那么在某个维度求和的效果是什么呢?其实就是将这个维度的长度压缩为1。

上面有个表达“维度的长度”,大家注意区分维度和长度。

举例说明 例子1 >> sum(a,1)

为方便,直接进入到变量面板查看。 这是原始的a矩阵: 在这里插入图片描述 这是ans,也就是sum(a,1)的操作结果: 在这里插入图片描述

可以看到2 3 4维度都没有受到影响,只有1维度的长度被压缩到了1,当然这个维度上的数也被加和起来了,即2=1+1。

例子2 >> sum(a,2)

ans如下: 在这里插入图片描述 结果已经很显然了,维度2的长度被压缩到1,这个维度上的数也被加和起来,即3=1+1+1。

例子3 >> sum(a,3)

ans如下:

在这里插入图片描述 这个例子需要对比不同求和方式得到的ans才能体会更深刻。维度3的长度从4被压缩到1,所以维度1和2表示的2*3矩阵被叠加了4下,所以是

在这里插入图片描述

的形式。

例子4 >> sum(a,4)

ans如下: 在这里插入图片描述 同理,5=1+1+1+1+1。

小结

MATLAB的对于矩阵的展示是这样的:前两个维度是通过平面排布的方式展示出来,更高维度则是通过索引展示出来。

通过平面排布的方式展示出来 意思就是维度1表示多少行,维度2表示多少列,而行列是用一种直观的平面排布,你甚至可以没有“维度”的概念。这也是我们平时最常说的:几行几列的矩阵。

在这里插入图片描述

通过索引展示出来 意思就是更高维度没法在一个平面中展示出来,平面中展示的永远是维度1和2的信息,维度3以及更高则通过索引比如下面的(3,4)展示。 所以通过(:,:,3,4)我们可以得到如下信息:维度1 2 之外还有两个维度,整个矩阵是4维的;a(:,:,3,4)是维度3的索引值=3以及维度4的索引值=4对应的矩阵。

在这里插入图片描述 编程的过程中是会涉及到高维矩阵的,比如下面这个约束:

e s , t , j , i v = e s , t − 1 , j , i v + p s , t , j , i v , c h η j , i v , c h − 1 η j , i v , d i s p s , t , j , i v , d i s ∀ s , t , j , i e_{s,t,j,i}^v = e_{s,t - 1,j,i}^v + p_{s,t,j,i}^{v,ch}\eta _{j,i}^{v,ch} - {1 \over {\eta _{j,i}^{v,dis}}}p_{s,t,j,i}^{v,dis}{\rm{ }}\forall s,t,j,i es,t,j,iv​=es,t−1,j,iv​+ps,t,j,iv,ch​ηj,iv,ch​−ηj,iv,dis​1​ps,t,j,iv,dis​∀s,t,j,i

最简单的方法其实是用4层循环,但这样效率低,没有充分利用MATLAB善于进行矩阵计算的特性。但是要把这个约束尽可能地写成矩阵形式(可以和for循环配合使用),理解清楚MATLAB高维矩阵的特性还是很有必要的。

另一些问题 >> a=ones(2,3,4,5); b=sum(a,4);

在这里插入图片描述 b直接变成3维了。

>> a=ones(2,3,4,5); b=sum(a,3);

在这里插入图片描述 在这里插入图片描述 b从属性上来看还是4维,但实际上第3个维度已经没有意义了。 我们在此基础上继续操作:

>> b=sum(b,4);

在这里插入图片描述 可以看到b直接变成2维了!由此我们可以看出,MATLAB中矩阵降维得从最外层开始降,不然会被“卡住”!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3