如何对matlab的​矩阵,每次间隔不固定​行数求取平均数。

10 次查看(过去 30 天)
sharang
sharang 2023-5-14
回答: garline 2023-5-14
各位大佬,本人新手有点菜,麻烦问一下这个问题,弄了好久都没有弄出来~~数据是218*4的矩阵,第一列的数据是可以求取每次间隔的行数,例如第一列第一行是7.4799,我现在需要对第一列的数据每次间隔一个固定数,如0.015,则求得的间隔数就是7.4949,7.5099,7.5249……若第一列的两个或多个数据在求得的两个间隔数之间,则对这些数据所在的行进行平均数的求取,合并为一行。例如只有7.4959在7.4949和7.5099之间,则该行不变。目前很急,真的麻烦各位了!!!
data8=data7; %data7为一开始的矩阵
b=1;a=0;
for j=0:434 %434为计算需要循环的次数
c=a;
for i=b:218
if 0.015*j+data7(1,1)<data7(i,1)
a=a+1;
continue
end
b=i;
end
for i1=1:4
if(a~=c)
for j1=1:400 %400是随便输入想看下结果
sum1(j1,i1)=sum(data8(b-(a-c)-1:b-1,i1));
ave1(j1,i1)=sum1/(a-c);
end
end
end
end
出错:
位置 1 处的索引无效。数组索引必须为正整数或逻辑值
显示的是sum1、ave1的错误
现在我不知道怎么解决这个问题,也不太清楚解决了这个问题之后能不能求得所要的数据
后续还要处理更复杂的数据,真的万分感谢!!
matlab.mat (6.57 KB, 下载次数: 7)

采纳的回答

garline
garline 2023-5-14
0.015太小了,很多只能包含一个或者没有。用0.05试试。
load matlab.mat
data=data8;
T=fix((data(:,1)-min(data(:,1)))/0.05)+1;
data=[T,data];
data=array2table(data);
G=groupsummary(data,'data1','mean',{'data2','data3','data4','data5'});
data=table2array(G(:,3:end));

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Code Generation 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!