How can I use a for loop to reassign matrix names?

조회 수: 10 (최근 30일)
Miranda
Miranda 2014년 5월 7일
댓글: Miranda 2014년 5월 7일
Hi there! I am trying to write a 'for' loop which does the following:
for i = 1:9
a = a0i; b = b0i; cx = c0i(:, 1); cy = c0i(:, 2); t = t00i;
foneplotp(a, b, cx, cy, t, period)
end
I have matrices labeled a01, a02, a03, etc. in my workspace, but when I try to run this, I get the error:
Undefined function or variable 'a0i'.
Is there a way to do this with a 'for' loop in MATLAB?
Thanks!
Miranda

채택된 답변

Star Strider
Star Strider 2014년 5월 7일
It’s horrible programming style, but it’s possible. So long as your matrices already exist and you simply need to call them, here is an example of what you can do:
a01 = pi;
c01 = [5 7];
for i = 1:9
a = eval(sprintf('a0%d',i))
cx = eval(sprintf('c0%d(:, 1)',i))
end
I used a01 and c01 to test the code, so remove those in your actual code. I listed them here so you can test them to see how it works.
  댓글 수: 2
Miranda
Miranda 2014년 5월 7일
Thank you so much! Even if it is horrible programming, it's only for data analysis.
Star Strider
Star Strider 2014년 5월 7일
편집: Star Strider 2014년 5월 7일
My pleasure!
The sincerest expression of appreciation here on MATLAB Answers is to accept the answer that solves your problem. It also helps others with similar questions find them.

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

추가 답변 (1개)

Image Analyst
Image Analyst 2014년 5월 7일
Why complicate it? Just do
foneplotp(a01, b01, c01(:,1), c01(:,2), t001, period);
foneplotp(a02, b02, c02(:,1), c02(:,2), t002, period);
foneplotp(a03, b03, c03(:,1), c03(:,2), t003, period);
foneplotp(a04, b04, c04(:,1), c04(:,2), t004, period);
foneplotp(a05, b05, c05(:,1), c05(:,2), t005, period);
foneplotp(a06, b06, c06(:,1), c06(:,2), t006, period);
foneplotp(a07, b07, c07(:,1), c07(:,2), t007, period);
foneplotp(a08, b08, c08(:,1), c08(:,2), t008, period);
foneplotp(a09, b09, c09(:,1), c09(:,2), t009, period);
It's only 9 lines long and a heck of a lot simpler to understand and maintain than the crazy workaround mentioned in the FAQ
  댓글 수: 3
Image Analyst
Image Analyst 2014년 5월 7일
편집: Image Analyst 2014년 5월 7일
You should NOT have 100 differently named variables! How did you ever create those in the first place? Did you use the method that the FAQ shows you but advises against ? Well you can do the same thing to get those names and assign them to other variables like a,b,c, etc.
You should use a 2D array instead of different names. This is what the FAQ strongly recommends . Please don't do what you are asking.
Miranda
Miranda 2014년 5월 7일
My main programming is in FORTRAN and it prints out to a MATLAB-readable file. It's not the cleanest way to program, I know. The issue is that I am printing out several hundred lines of data at each time step (which refers to the 01, 02, 03, etc.) which correspond to several hundred different calculations.

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

카테고리

Help CenterFile Exchange에서 Historical Contests에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by