【发布时间】:2011-12-27 22:41:33
【问题描述】:
我需要一些帮助来解决这个问题
我在 MATLAB 中有这个矩阵:
A = [ 25 1.2 1
28 1.2 2
17 2.6 1
18 2.6 2
23 1.2 1
29 1.2 2
19 15 1
22 15 2
24 2.6 1
26 2.6 2];
第一列是温度的一些测量值
第二列是代表颜色的索引代码(1.2:红色,.....等)
第 3 列是取样的时间。仅在从 1 点到 2 点的时间
我希望矩阵由第二列控制如下:
如果是 1.2,程序将在第 1 小时找到所有温度的平均值
对应1.2
所以,这里 (25 + 23)/2 = 24
还找到第 2 小时所有温度的平均值,并且对应
到 1.2, ( 28 + 29 ) /2 = 28.5
这个平均值:
[24
28.5]
将替换第 1 小时和第 2 小时的所有温度值
对应于 1.2。
然后,它对索引 2.6 和 15 执行相同的操作
因此,所需的输出将是:
B = [ 24
28.5
15.5
22
24
28.5
19
22
15.5
22]
我的问题在于使用循环。我可以一次只为一个索引执行此操作。
例如,
T=[];
index=1.2;
for i=1:length(A)
if A(i,2)==index
T=[T A(i,1)];
else
T=[T 0];
end
end
所以,T 是提取的对应于 1.2 的 T,其他条目为零
然后,我写了很长的代码来求平均值,最后我可以找到矩阵
仅对应于索引 1.2:
B = [24
28.5
0
0
24
28.5
0
0
0
0]
但这仅适用于一个索引,它为其他索引分配零。我可以为所有人做到这一点
单独运行索引,然后添加 B,但这需要很长时间,因为我的真实
矩阵是 8760 x 5。
我确信有更短的方法可以做到这一点。
谢谢
问候
【问题讨论】:
标签: arrays matlab matrix average