Info

This question is closed. Reopen it to edit or answer.

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

2 views (last 30 days)
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 Comments
Jonathan Fernandez
Jonathan Fernandez on 24 May 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!!

Answers (1)

Rajani Mishra
Rajani Mishra on 27 May 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.

Community Treasure Hunt

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

Start Hunting!