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.
... 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 2014년 11월 29일
Thanks again.

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Structures에 대해 자세히 알아보기

태그

질문:

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