首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构内矩阵的平均

结构内矩阵的平均
EN

Stack Overflow用户
提问于 2016-04-22 14:48:11
回答 2查看 98关注 0票数 2

我有一个有20个矩阵的结构P。每个矩阵都是53x63x46双的。矩阵的名称是相当随机的,例如S154、S324、S412等。我是否可以在这些矩阵之间做一个平均值,而不必像这样键入?

代码语言:javascript
复制
M=(P.S154 + P.S324 + P.S412 + ...)/20

同样,使用这样的计算结构有意义吗?根据this post的说法,也许应该将其转换为单元格数组。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-22 15:03:16

代码语言:javascript
复制
struct2cell(P)

是一个单元格数组,每个元素都是您的结构字段之一(字段名被丢弃)。然后

代码语言:javascript
复制
cell2mat(struct2cell(P))

是沿着第一轴连接这些矩阵的结果。你可能会合理地问,为什么它这样做,而不是,比如说,建立一个新的轴,给你一个四维的数组,但期待这样的问题的合理答案是询问挫折。总之,除非我把尺寸弄糊涂了,

代码语言:javascript
复制
reshape(cell2mat(struct2cell(P)),[53 20 63 46])))

然后会给你大致的四维数组,你所追求的,与“新的”轴是(当然!)第二,所以现在

代码语言:javascript
复制
mean(reshape(cell2mat(struct2cell(P)),[53 20 63 46]),2)

将计算沿该轴的平均值。结果将是形状[53 1 63 46],因此现在需要再次修复轴:

代码语言:javascript
复制
reshape(mean(reshape(cell2mat(struct2cell(P)),[53 20 63 46]),2),[53 63 46])
票数 1
EN

Stack Overflow用户

发布于 2016-04-22 14:56:01

如果您正在使用结构,并通过您的问题,您有每个矩阵的字段名。

因此,你需要:

1-使用函数fieldnames提取结构中的所有矩阵名。- http://www.mathworks.com/help/matlab/ref/fieldnames.html

2-然后您可以通过这样的方式访问它:

代码语言:javascript
复制
names = fieldnames(P);
matrix1 = P.names{1}

使用for循环,您就可以非常快地进行计算!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36796938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档