如何对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 Center および File ExchangeCode Generation についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!