George
George

Reputation: 128

Matlab name assignment

I am trying to decrease some big chucks of matlab code i had from a while ago, and was hoping to get them a bit more "clean".

The VarName2,VarName3,VarName4 ...etc are provide by measured data and i will know what they are always going to be thus i gave me the name A,B ,C , the think i want changed though is the first part of the name, so every time i run the .m file I will use the input('') option

where as fname = 'SWAN' and A, B , C are the second part of the name and they are constant.

fname = input ('enter name')

fname_A = VarName2
fname_B = VarName3
fname_C = VarName4

and want to be getting

SWAN_A = VarName2
SWAN_B = VarName3
SWAN_C = VarName4

thank you

Following your advices I been trying the structure construction

S.name = input ('enter name of the data ".." ==')
S.A = A;
S.A(1,:)=[];
S.B = B;
S.B(1,:)=[];
S.C = C;
S.C(1,:)=[];
S.D = D;
S.D(1,:)=[];
S.E = E;
S.E(1,:)=[];

may i ask if i can also have an input thing command so i can change the name of the structure?

Precede the script with S='west' and then do

'S'.name = input ('enter name of the data ".." ==')
    S.A = A;

Upvotes: 0

Views: 97

Answers (2)

Shai
Shai

Reputation: 114976

you can use eval

eval( sprintf('%s_A = VarName2;', fname ) );
eval( sprintf('%s_B = VarName3;', fname ) );
eval( sprintf('%s_C = VarName4;', fname ) );

Note that the use of eval is not recommended.

One alternative option may be to use struct with dynamic field names:

A.( fname ) = VarName2;
B.( fname ) = VarName3;
C.( fname ) = VarName4;

Now you have three structs (A, B and C) with A.SWAN equal to VarName2, B.SWAN equal to VarName3 etc.

Upvotes: 1

Dennis Jaheruddin
Dennis Jaheruddin

Reputation: 21561

Here is how I would probably store the information that you are handling:

S.name = input ('enter name')
S.A = VarName2
S.B = VarName3
S.C = VarName4

And if you want to do it a few times:

for t=3:-1:1
  S(t).name = input ('enter name')
  S(t).A = VarName2
  S(t).B = VarName3
  S(t).C = VarName4
end

In this way you could now find the struct named 'swan':

idx = strcmpi({S.name},'SWAN')

Upvotes: 3

Related Questions