Run a loop through multiple matrices

조회 수: 6 (최근 30일)
Navneet
Navneet 2014년 1월 15일
댓글: Navneet 2014년 1월 16일
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

채택된 답변

Kelly Kearney
Kelly Kearney 2014년 1월 16일
편집: Kelly Kearney 2014년 1월 16일
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.
  댓글 수: 1
Navneet
Navneet 2014년 1월 16일
Hi Kelly, That worked! Thank you so much.
NK

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

추가 답변 (1개)

Amit
Amit 2014년 1월 16일
Something like this:
for i = 1:5
eval(['A' num2str(i) '(' 'A' num2str(i) '<0.1 | A' num2str(i) '>0.3)' '=' 'NaN'])
end
  댓글 수: 2
Navneet
Navneet 2014년 1월 16일
Hi Amit, Thank you for the response. Can you please explain why you chose i=1:5? Also, I actually have different names for all these matrices, so how will the loop run through all of them? Thanks!
Navneet
Navneet 2014년 1월 16일
And, those names are not in the series like I had given in the example. Sorry about that!

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

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by