- you use nested loops, but never use the outer loop variable i anywhere useful, so it just repeats exactly the same thing 24 times.
- the loop variable i remains totally unused here: sprintf('ii_Sub*.mat',i). There is nothing in that formatting string that uses any input variable.
- The call mean(a,24) makes no sense: a is a cell array, so taking mean of it is not defined. Even if it did work your array have 24 dimensions, so telling MATLAB to sum over the 24th dimension (which will be singular) serves no purpose whatsoever.
How can I get an average of different matrices stored as separate .mat files?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Native
el 13 de Nov. de 2018
Comentada: João Vítor Batista Pires Santos
el 20 de Jul. de 2021
I have 24 different matrices of dimension 68X68, stored in a folder. I need to create a new matrix that is an average of all those matrices. Using previous FAQ from this forum, I tried :
Num = 24
for i = 1:Num
files = dir(sprintf('ii_Sub*.mat',i))
for k = 1:length(files)
fprintf('Current file : %s\n', files(k).name)
a = load(files(k).name)
meanmatrix = mean(a,24)
end
end
This is creating a 1X1 struct only, while the mean command shows an error as well. How best can I go about it?
3 comentarios
Stephen23
el 13 de Nov. de 2018
@Native: please do not close threads that have already have answers.
Respuesta aceptada
Stephen23
el 13 de Nov. de 2018
Editada: Stephen23
el 13 de Nov. de 2018
Assuming that each file contains exactly one variable (a matrix) and that all matrices are the same size and type:
S = dir('*.mat');
N = numel(S);
C = cell(1,N);
for k = 1:N
T = load(S(k).name)
C(k) = struct2cell(T);
end
M = cat(3,C{:})
mean(M,3)
9 comentarios
Stephen23
el 20 de Jul. de 2021
@João Vítor Batista Pires Santos: you could try something like this:
for k = 1:N
C{k} = ncread(S(k).name,'PRMSL_L101'); % PRMSL_L101 = Pressure (17x17x4)
end
A = cat(4,C{:});
M = mean(A,4)
João Vítor Batista Pires Santos
el 20 de Jul. de 2021
@Stephen Cobeldick It works perfectly!! Thank you!
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!