Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

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

조회 수: 1 (최근 30일)
Jonathan Fernandez
Jonathan Fernandez 2020년 5월 23일
마감: MATLAB Answer Bot 2021년 8월 20일
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
Jonathan Fernandez
Jonathan Fernandez 2020년 5월 24일
Great Walter, thank you!!
Jonathan Fernandez
Jonathan Fernandez 2020년 5월 24일
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!!

답변 (1개)

Rajani Mishra
Rajani Mishra 2020년 5월 27일
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!

Translated by