creating an ongoing matrix
Info
This question is closed. Reopen it to edit or answer.
Show older comments
Hello
The following simple script is going to merge two or three files and then calculate the mean of every n columns in a for loop. What I need to do is to create a new matrix as the number of averaged columns is added to the matrix one by one and write the resluts in an excel file. Thank you a lot in advance.
path='D:\';
fileName1=strcat(path,'Se1_101_200.xlsx'); %23*35 double
fileName2=strcat(path,'Se1_201_300.xlsx'); %23*35 double
data1 = xlsread(fileName1,2);
data2 = xlsread(fileName2,2);
mergedData1=[data1 data2]; %23*70 double
for i=1:35
for ii=36:70
B = mergedData1(:,[i ii]);
meanVal= mean(B,2);
% I need to create a matrix of 23*35 with the changing meanVal
end
end
7 Comments
Bob Thompson
on 8 Oct 2019
Index your output.
meanVal(:,i) = mean(B,2);
Or something like that.
Elaheh
on 8 Oct 2019
Adam Danz
on 8 Oct 2019
Could you explain in words what you're trying to do? Your ii-loop has 34 iterations and each of those iterations happen 35 times within your i-loop. That's 1190 iterations but your comment in the code suggest your're expecting 35 iterations.
Elaheh
on 8 Oct 2019
Adam Danz
on 8 Oct 2019
To average the columns of a matrix,
mean(M,1)
Elaheh
on 8 Oct 2019
Bob Thompson
on 9 Oct 2019
Hmm, ok, I think I better understand what you're trying to do now. Just to reiterate though, you want the average of the first columns of each data set (columns 1 and 36) and then the average of the second columns of each data set (columns 2 and 37), but not the average of the non-corresponding columns (columns 1 and 37).
for i = 1:size(mergedData1,2)/2
B = mergedData1(:,[i i+size(mergedData1,2)/2]);
meanVal(:,i) = mean(B,2);
end
Answers (0)
This question is closed.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!