adding strings per component

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?

 采纳的回答

Azzi Abdelmalek
Azzi Abdelmalek 2014-11-29

0 个投票

6 个评论

Hello, I am lost. Please elaborate. What could be a better alternative/solution to the problem above?
Thanks
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)
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)
Thanks again.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Structures 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by