Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

How to use correctly a string from a variable into a for loop??

1 visualizzazione (ultimi 30 giorni)
Hi all,
Firstly thank you for your time!
I'm working in a matlab script for data analysis and plotting from a csv file. I'm trying to use a variable name into a for loop to get the data on a specific table column but I can't get it right...
A simplified version of my code is:
CSV_Import=readtable('Data.csv');
Ch_sLap ='distancelap';
Channels={'Ch_sLap'}
sLap = CSV_Import.(Ch_sLap);
for i=1:length(Channels)
if exist(char(Channels(i)))
char(Channels(i)) = CSV_Import.((fprintf('%s\n', Channels{i})));
end
end
What I want to do is:
  • Import a csv file with some data arranged in columns with headers into a table
  • Find the column which is named "distancelap" on that table
  • That column header (distancelap) is coming from an array of strings that I've created previously
  • Then, if I find the column using this: sLap = CSV_Import.(Ch_sLap); is working fine
  • But instead of that, if I use the for loop (In case I had a long Channels array) I can't make it to work because it takes "Ch_sLap" instead of its value which is "distancelap"
I can do it without the loop and just put one by one all the variables of the Channels array but I don't like it at all...
What do you think???
Thank you!!
  5 Commenti
Jonathan Fernandez
Jonathan Fernandez il 24 Mag 2020
I've been checking what you proposed Walter and it still gives me the same problem. I may not explained myself correctly:
In the Channels table one of the column is named "distancelap".
That name ("distancelap") is inside the Ch_sLap variable, I mean:
Ch_sLap = 'distancelap'
What I want is to find the 'distancelap' column in the table from a command. If I use this:
Channels_struct = table2struct(CSV_Import(:,Channels));
it tries to find Ch_sLap in the table, but what I want to find is 'distancelap' (The string placed inside Ch_sLap).
I hope not to be a pain...
Thank you!!

Risposte (1)

Rajani Mishra
Rajani Mishra il 27 Mag 2020
By writing below mentioned code you are creating a string variable with value as 'Ch_sLap' and storing in cell array Channels. Hence, it takes column name as 'Ch_sLap'.
Channels={'Ch_sLap'}
I created a table mentioned in the first example on this page and tried your code. I changed "Channels" array into the following way (variable 'Ch_sLap' has value 'Age') :
Channels={Ch_sLap}
for i=1:length(Channels)
myTable.(Channels{i})
end
Above code was able to print values present in 'Age' column.

Questa domanda è chiusa.

Community Treasure Hunt

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

Start Hunting!

Translated by