creating an ongoing matrix
Informazioni
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
Mostra commenti meno recenti
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 Commenti
Bob Thompson
il 8 Ott 2019
Index your output.
meanVal(:,i) = mean(B,2);
Or something like that.
Elaheh
il 8 Ott 2019
Adam Danz
il 8 Ott 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
il 8 Ott 2019
Adam Danz
il 8 Ott 2019
To average the columns of a matrix,
mean(M,1)
Elaheh
il 8 Ott 2019
Bob Thompson
il 9 Ott 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
Risposte (0)
Questa domanda è chiusa.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!