Matlab 当在一个特定点上收集了多个数据时,绘制数据的平均值和标准偏差

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 我想

我有一个矩阵,一列n是一年中的某一天,另一列是与该天相关的数据。一年中的某些日子有多个数据点,而其他日子则有一个或没有。这使得绘制信息变得很困难,我想做的是根据数据的平均值和标准偏差绘制数据。因此,如果在一年中的第320天收集了三次数据,那么将找出这三个数据点的平均值和标准偏差,然后在绘制时,平均线将穿过平均值,标准偏差将表示误差条。那么就说数据是:

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]