How to create variables using strings in an array?

str1={'x','trs','height','width'}
str2='db_xtr'
For example, I wanted to do:
for ivar=1:size(str1,2)
C_%str1%_%str2%=ivar^2+2
end
to get following variables:
C_x_db_xtr = 1^2+2
C_trs_db_xtr = 2^2+2
C_height_db_xtr = 3^2+2
C_width_db_xtr = 4^2+2
seems function "genvarname" would do something similar but do not know how to do it for my particular case.
Thanks...

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 15 Sep. 2013

1 Stimme

1 Kommentar

J. Hu
J. Hu am 15 Sep. 2013
Bearbeitet: Azzi Abdelmalek am 29 Sep. 2013
It works. Great. Thanks... Seems the main reason not being recommended is that it runs slowly.
str1={'x','trs','height','width'}
str2='db_xtr'
for ivar=1:size(str1,2)
eval(sprintf('C_%s_%s=%d^2+2',str1{ivar},str2,ivar))
end

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Andrei Bobrov
Andrei Bobrov am 15 Sep. 2013
str1={'x','trs','height','width'}
str2='db_xtr'
input1 = [strcat(str1,'_',str2);num2cell((1:numel(str1)).^2+2)]
C = struct(input1{:})

2 Kommentare

J. Hu
J. Hu am 15 Sep. 2013
Thanks... however this is not exactly the way I want. It may work for some case. But how about if I need to put this in a multiple level loops and so the variable would be a 1D vector, 2D matrix like C_%str1%_%str2%(ivar1,ivar2)=ivar1^2+ivar2+2.
Don't do that.
C{ivar1}{ivar2} = ... some matrix expression ...

Melden Sie sich an, um zu kommentieren.

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by