changing part of the name of a variable inside a "for" loop
Show older comments
hello everyone!
let's say i have the equation between two variables:
DT10sec= A*T10sec
How can i use a "for" loop to calculate the equation
DT20sec= A*T20sec
DT30sec= A*T30sec,
DT40sec= A*T40sec,... etc
How can i interfere in just a part of the name of a variable?
3 Comments
Azzi Abdelmalek
on 6 Oct 2012
what do you mean by to calculate equation?
How did you generate variables T10sec, T20sec, etc... in the first place? Did you have an automated procedure for that? If so, how is what you're trying to do now significantly different?
I assume you know, by the way, that this is a bad thing to do. You could have just had T(1), T(2), T(3), etc... and then simply done DT=A*T.
vaggelis vaggelakis
on 6 Oct 2012
Accepted Answer
More Answers (3)
Azzi Abdelmalek
on 6 Oct 2012
for k=20:10:40
eval(sprintf('DT%dsec=A*%dsec',k,k))
end
Wayne King
on 6 Oct 2012
Edited: Wayne King
on 6 Oct 2012
You can use eval() for this. For example to to get y1, y2, y3, such that
y1 = x^1;
y2 = x^2;
x = 2;
for ii = 1:10
eval(['y' num2str(ii) '=x^' num2str(ii) ';']);
end
Now you have variables, y1 through y10 in your workspace. There are good reasons not to do this obviously because you can proliferate the number of variables quite excessively.
James Cress
on 12 Jun 2018
1 vote
You could do this very easily with a struct.
data = struct;
for k = 1:4
data.(['DT' num2str(k*10) 'sec'])= A*data.(['T' num2str(k*10) 'sec']);
end
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!