필터 지우기
필터 지우기

Mean of mutiple variables

조회 수: 1 (최근 30일)
ali akbar
ali akbar 2020년 12월 11일
댓글: dpb 2020년 12월 11일
I have 5 '.mat' data files where each datafile contains 1 by 19 cell (each cell size = 512 by 9). I wanted to find the mean of the 4th column of 1st cell from all 5 data files.
Here is a look at the code.
load('data1a.mat');load('data2.mat');load('data3.mat');load('data4.mat');load('data5.mat');...
% Extracting the 4th column
a=data1a{1,1}(:,4);b=data2{1,1}(:,4) and so on...
m=(a+b+c+d+e)/5
Now people in stoneage might used to do this kind of laborious exercise. I am wondering if anyone could give a one/two liner answer for finding mean which is not naive like mine.
  댓글 수: 4
Stephen23
Stephen23 2020년 12월 11일
Copy and pasting code like this is a sign that you are doing something wrong:
load('data1a.mat');load('data2.mat');load('data3.mat');load('data4.mat');load('data5.mat');...
Learn to use arrays and indexing! For example:
ali akbar
ali akbar 2020년 12월 11일
please see attached.

댓글을 달려면 로그인하십시오.

채택된 답변

dpb
dpb 2020년 12월 11일
편집: dpb 2020년 12월 11일
d=dir('data*.mat'); % or similar list. Name files so can use appropriate wildcard expression
total=0;
for i=1:numel(d)
data=load d(i).name;
total=total+structfun(@(x)sum(x{1}(:,4)),data);
end
mn=mean(total);
Above does the summation; same result if were to use mean in the anonymous function as well if same number elements in each cell array.
If the variables were named consistently would be easier to code; above handles whatever they are inside the .mat files as long as just one variable per file.
  댓글 수: 2
ali akbar
ali akbar 2020년 12월 11일
thank you. matlab throwing a syntax error on the second line of the 'for' loop.
dpb
dpb 2020년 12월 11일
so, debug it. (Exercise for Student :) )
Accidentally wrote it as command syntax instead of function form needed.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by