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 件のコメント

cgo
cgo 2014 年 11 月 29 日
Hello, I am lost. Please elaborate. What could be a better alternative/solution to the problem above?
Thanks
Azzi Abdelmalek
Azzi Abdelmalek 2014 年 11 月 29 日
編集済み: Azzi Abdelmalek 2014 年 11 月 29 日
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 2014 年 11 月 29 日
This is neater and elegant. Thank you.
per isakson
per isakson 2014 年 11 月 29 日
... 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.
Azzi Abdelmalek
Azzi Abdelmalek 2014 年 11 月 29 日
You can also use table
velocity=s(:,1);
position=s(:,2);
out=table(velocity,position)
cgo
cgo 2014 年 11 月 29 日
Thanks again.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeStructures についてさらに検索

タグ

質問済み:

cgo
2014 年 11 月 29 日

コメント済み:

cgo
2014 年 11 月 29 日

Community Treasure Hunt

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

Start Hunting!

Translated by