Quick question regarding CSV file reading.

조회 수: 1 (최근 30일)
benjamin finsås
benjamin finsås 2021년 5월 3일
댓글: Jeremy Hughes 2021년 5월 4일
I have two csv files with only one colum each. I want to extract only the first number (measurement counter) and Sensor output last (V), i dont care about the water temp. The second file has less measurements (rows) than the first, so i need to chop out some measurements (rows). Preferably i want to start from a specific row, for example row 3-9 in CSVfile1 and row 4-8 in CSVfile2. Can anyone explain how i could do this, if its even possible?
I also need to plot the two tables/arrays in a same graph.
Best regards,
-Ben
  댓글 수: 4
Walter Roberson
Walter Roberson 2021년 5월 3일
Can you attach a file with a few sample lines?
benjamin finsås
benjamin finsås 2021년 5월 3일
Of course.
I use excel to open them.

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

채택된 답변

Mathieu NOE
Mathieu NOE 2021년 5월 3일
hello
my quick suggestion to the quick question
fid=fopen('cycle1.csv');
e=textscan(fid,'%s','headerlines',1);
e_splitted = split(e{1},',');
outdata = cellfun(@str2num,strrep(e_splitted, '"', '')); % remove double quotes & convert string to num
% get my Counter and Sensor_Output data
start_row = 3;
stop_row = 9;
Counter_Output = outdata(start_row:stop_row,1);
Sensor_Output = outdata(start_row:stop_row,2);
  댓글 수: 6
benjamin finsås
benjamin finsås 2021년 5월 4일
You are a legend my friend.
Thanks!
Mathieu NOE
Mathieu NOE 2021년 5월 4일
my pleasure

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

추가 답변 (2개)

EmirBeg
EmirBeg 2021년 5월 3일
편집: EmirBeg 2021년 5월 3일
Data1 = readtable('cycle1.csv');
Data2 = readtable('cycle2.csv');
t1 = table2array(Data1(:,1));
SensorOutput1 = table2array(Data1(:,2));
t2 = table2array(Data2(:,1));
SensorOutput2 = table2array(Data2(:,2));
SizeDiff = size(SensorOutput1,1)-size(SensorOutput2,1);
StartingRow = 1; %set the row that you want to start with
t1 = t1(StartingRow:size(t1,1)-SizeDiff);
SensorOutput1 = SensorOutput1(StartingRow:size(SensorOutput1,1) - SizeDiff);
plot(t1,SensorOutput1);
hold on;
plot(t2,SensorOutput2);
hold off;
  댓글 수: 1
Jeremy Hughes
Jeremy Hughes 2021년 5월 4일
This is a bit cumbersome:
t1 = table2array(Data1(:,1));
SensorOutput1 = table2array(Data1(:,2));
t2 = table2array(Data2(:,1));
SensorOutput2 = table2array(Data2(:,2));
It would be easier just to use dynamic variable indexing:
t1 = Data1.(1);
SensorOutput1 = Data1.(2);
t2 = Data2.(1);
SensorOutput2 = Data2.(2);

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


Jeremy Hughes
Jeremy Hughes 2021년 5월 4일
I'd do this:
opts = detectImportOptions('cycle1.csv','Delimiter',',','VariableNamingRule','preserve');
opts.SelectedVariableNames = opts.VariableNames(1:2);
opts.DataLines = [3 9];
T1 = readmatrix('cycle1.csv',opts);
opts.DataLines = [4 8];
T2 = readmatrix('cycle2.csv',opts);
I'll leave the plotting to you.

카테고리

Help CenterFile Exchange에서 String에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by