i need to create variable name using for loop from a table

i'm trying to assign each column from my table to each separate variable with header as variable name using for loop
i couldn't find any function that directly does it
i've used fo loop to index tha data and i'm able to pront the collumns separately
when i try to assign contents of a table as variable name it is not allowing to go ahead
the following is my code
tableA has headers as variable names which are loaded in table T
file =("WLTCshortened_2.txt")
opts = detectImportOptions(file);
opts.DataLines = 3;
tableA=readtable(file,opts)
T = readtable('variable_name.xlsx', 'Range','A2:BV2', 'ReadVariableNames',false)
for i=(1:74)
rowname =string(table2cell(T(1,i)))
y=rowname.char
string(y)=(tableA.(string(y)))
end

댓글 수: 9

You can straight away access them using:
either T.(1), T.(2) or T.varname1, T.varname2.
Why you want to assign them ino other variable?
please attach your file
file is very big to attach
the file is is similar to this
table A
time speed brake
0 0 0
1 2 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
and table T
time speed brake
@KSSV i need to separate each column to create a timeseries data
there are lot of variables
instead of doing manually like
speed=tableA.speed
i would like to use for loop to extract in all the variables
for i = 1:width(T)
data = T.(i) ;
end
hai @KSSV this what i'm also doing
for i=(1:74)
rowname =string(table2cell(T(1,i)))
y=rowname.char
string(y)=(tableA.(string(y)))
end
i need to create sepate variables which has name of cell contents
here 74 is table width
it is not working
i need a way to use the string stored in y as a variable name
tried fprintf, string, springf
none of htese is working
Stephen23
Stephen23 2022년 2월 23일
편집: Stephen23 2022년 2월 23일
"i need a way to use the string stored in y as a variable name"
Why? What are you planning on doing with those dynamically-named variables?:
What possible benefit do you imagine that cannot be achieved using the syntaxes shown by KSSV?:
"i need to separate each column to create a timeseries data"
You can do that easily by looping over the table variables and storing the timeseries in a cell array, table, or structure. Did you try that before jumping to the conclusion that you need to dyanamically name variables?
temp = struct;
temp.(string(y))=(table.(string(y)));
save("tempData.mat","-struct","temp")
load tempData.mat
delete tempData.mat
clear temp
adding the above code has worked
@Stephen i need dynamically named variable as i have around 80 variables to be analysed with simulink
that will help me with easy identification

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

 채택된 답변

Vijayagopi Ramachnadran
Vijayagopi Ramachnadran 2022년 2월 28일

0 개 추천

temp = struct;
temp.(string(y))=(table.(string(y)));
save("tempData.mat","-struct","temp")
load tempData.mat
delete tempData.mat
clear temp
adding the above code has worked

추가 답변 (1개)

Steven Lord
Steven Lord 2022년 2월 23일

1 개 추천

Can you define variables with numbered names like X1, X2, X3, ... ? Yes.
Should you do this? Generally we recommend against it. See that page for alternatives you should use instead.

댓글 수: 3

temp = struct;
temp.(string(y))=(table.(string(y)));
save("tempData.mat","-struct","temp")
load tempData.mat
delete tempData.mat
clear temp
this has helped in addition to above code
Since you mentioned you want to do this in the context of working with Simulink, I'd consider using a model workspace or perhaps a data dictionary. See the documentation for more information on how to programmatically interact with a model workspace and this documentation section for more information about managing design data in general.

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

카테고리

도움말 센터File Exchange에서 Workspace Variables and MAT Files에 대해 자세히 알아보기

제품

릴리스

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by