Hi,
I have the following code:
for n = 1:4
velocity = ['v_',num2str(n),' = n*2'];
eval(velocity)
position = ['x_', num2str(n), '= n.^2'];
eval(position)
end
So, the expected output would be: v_1 = 2, x_1 = 1 \\ v_2 = 4, x_2 = 4 \\ … \\ v_4 = 8, x_4 = 16.
Let's say we want to do something to the components. For example, add v_1 + x_1, (we want to do something to variables with the same index.) How do we do that?

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 29 Nov. 2014

0 Stimmen

6 Kommentare

cgo
cgo am 29 Nov. 2014
Hello, I am lost. Please elaborate. What could be a better alternative/solution to the problem above?
Thanks
Azzi Abdelmalek
Azzi Abdelmalek am 29 Nov. 2014
Bearbeitet: Azzi Abdelmalek am 29 Nov. 2014
The alternative is to work with arrays, or cell arrays. In your case:
s(:,1)=(1:4)'*2
s(:,2)=(1:4)'.^2
The first column represent the velocity and the second represent the position. Why to create a name for each value when you can use just one? Then if you want to sum velocity and position
out=sum(s,2)
cgo
cgo am 29 Nov. 2014
This is neater and elegant. Thank you.
... or two structures called, e.g.&nbsp velocitiy &nbspand&nbsp position
for n = 1:4
velocity.( sprintf('v_%d', n ) ) = n*2;
position.( sprintf('x_%d', n ) ) = n.^2;
end
This is a good alternative when the names of the fields carry valuable information on the code, but maybe not this time.
You can also use table
velocity=s(:,1);
position=s(:,2);
out=table(velocity,position)
cgo
cgo am 29 Nov. 2014
Thanks again.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Tags

Gefragt:

cgo
am 29 Nov. 2014

Kommentiert:

cgo
am 29 Nov. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by