Run a loop through multiple matrices
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Navneet
el 15 de En. de 2014
Comentada: Navneet
el 16 de En. de 2014
Hi, I have 15 matrices, say A1, A2 and so on.. I want to remove all the values below 0.10 and above 0.30 from all of these matrices. Then, I want to replace all of those places with NaN. Can someone please help me with this?
This might be basic, but I am very new to matlab or any kind of coding. Thanks! NK
0 comentarios
Respuesta aceptada
Kelly Kearney
el 16 de En. de 2014
Editada: Kelly Kearney
el 16 de En. de 2014
To do the replacement on a single variable, you just need
x(x < 0.1 | x > 0.3) = NaN;
To apply it to all your variables, there are a few possibilities.
- Type that line 15 times, replacing x with whatever the names of your 15 variables are.
- If the variables are named systematically, as you suggested (i.e. A1, A2, A3), you could try using eval, as Amit suggests. But eval is usually recommended against, because it can cause unexpected outcomes if you're not careful (and it makes for very ugly code).
- My suggestion: just create a function that applies the NaN-replacement to any number of variables.
function varargout = addnans(varargin)
for ii = 1:length(varargin)
varargout{ii} = varargin{ii};
varargout{ii}(varargout{ii} < 0.1 | varargout{ii} > 0.3) = NaN;
end
Then you could call it as
[A1, A2, ...] = addnans(A1, A2, ...)
This will work regardless of the number of variables, or whether the variables follow a systematic naming convention or not. Just make sure your input variables always match your output variables.
Más respuestas (1)
Amit
el 16 de En. de 2014
Something like this:
for i = 1:5
eval(['A' num2str(i) '(' 'A' num2str(i) '<0.1 | A' num2str(i) '>0.3)' '=' 'NaN'])
end
2 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements 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!