Use text in table to make variables

20 visualizzazioni (ultimi 30 giorni)
I have a table, T; the first column contains text enclosed in single quotes, and the second column contains scalar numbers:
Symbol Value
1 'Z1' 3
2 'Z2' 4
How can I get Matlab to create variables from the Symbols and assign the Values to them? ie
Z1=3
Z2=4
I could convert T.Symbol into a string vector:
T.Symbol =s,
but how can I convert s into variables, without having to type each variable manually? (In reality, my table contains many rows, and I have more than one table.)

Risposta accettata

Walter Roberson
Walter Roberson il 22 Gen 2021
That is not recommended. For example, how would you expect your code to be able to proceed if one of the symbols was 'T' and so you assigned a numeric value to T, overwriting T's usage as a table?
T = table({'Z1'; 'Z2'}, [3;4], 'VariableNames', {'Symbol', 'Value'})
T = 2x2 table
Symbol Value ______ _____ {'Z1'} 3 {'Z2'} 4
vars = cell2struct(num2cell(T.Value), T.Symbol, 1)
vars = struct with fields:
Z1: 3 Z2: 4
vars.Z2
ans = 4
  1 Commento
David Slater
David Slater il 23 Gen 2021
This works. I can now use vars.Z1 and vars.Z2 in place of the variables Z1 and Z2 in the remainder of my script. to save time, in reality I have named the structure with a single letter. This makes a difference, because there are many more than two variables in my script. I also followed the link to the tutorial, and and I found it helpful. Many thanks. Answer accepted.

Accedi per commentare.

Più risposte (1)

dpb
dpb il 22 Gen 2021
Do NOT even think about doing this.
  1 Commento
David Slater
David Slater il 23 Gen 2021
An explanation of why not would have been helpful. Walter Robinson has given me an acceptable solution and explained why this is not recommended.

Accedi per commentare.

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by