Matlab 当在一个特定点上收集了多个数据时,绘制数据的平均值和标准偏差
我有一个矩阵,一列n是一年中的某一天,另一列是与该天相关的数据。一年中的某些日子有多个数据点,而其他日子则有一个或没有。这使得绘制信息变得很困难,我想做的是根据数据的平均值和标准偏差绘制数据。因此,如果在一年中的第320天收集了三次数据,那么将找出这三个数据点的平均值和标准偏差,然后在绘制时,平均线将穿过平均值,标准偏差将表示误差条。那么就说数据是:Matlab 当在一个特定点上收集了多个数据时,绘制数据的平均值和标准偏差,matlab,plot,mean,standard-deviation,Matlab,Plot,Mean,Standard Deviation,我有一个矩阵,一列n是一年中的某一天,另一列是与该天相关的数据。一年中的某些日子有多个数据点,而其他日子则有一个或没有。这使得绘制信息变得很困难,我想做的是根据数据的平均值和标准偏差绘制数据。因此,如果在一年中的第320天收集了三次数据,那么将找出这三个数据点的平均值和标准偏差,然后在绘制时,平均线将穿过平均值,标准偏差将表示误差条。那么就说数据是: DOY DATA 30, 12 30, 10 30, 8 120, 6 110, 5 我想
DOY DATA
30, 12
30, 10
30, 8
120, 6
110, 5
我想将其转换为:
DOY DATA STD
30, 10, 2
120, 6, 0
110, 5, 0
然后我希望用代表误差条的标准偏差来绘制这些数据。
我该怎么办
谢谢您可以使用Matlab的
数据集
轻松分组-
>> doy = [30 30 30 120 110]';
>> data = [12 10 8 6 5]';
下一行创建一个包含两列的dataset
对象,称为“doy”和“data”
这一行表示计算组统计数据,使用“doy”作为分组变量,并计算每个组的平均值和标准差。它还提供列GroupCount
中每个组中的变量数
>> grpstats(ds, 'doy', {'mean', 'std'})
ans =
doy GroupCount mean_data std_data
30 30 3 10 2
110 110 1 5 0
120 120 1 6 0
您也可以使用accumarray,尤其是在您没有统计工具箱的情况下:
doy = [30 30 30 120 110]';
data = [12 10 8 6 5]';
[~,ind,subs] = unique(DOY);
means = accumarray(subs, data, size(ind), @mean);
stds = accumarray(subs, data, size(ind), @std);
final = [DOY(ind), means, stds]
请提供您的数据矩阵的模拟示例编辑我的问题以包括一个示例,谢谢为什么
370
而不是30
?对不起,我是说30!谢谢你的提携!
doy = [30 30 30 120 110]';
data = [12 10 8 6 5]';
[~,ind,subs] = unique(DOY);
means = accumarray(subs, data, size(ind), @mean);
stds = accumarray(subs, data, size(ind), @std);
final = [DOY(ind), means, stds]