Problem reading a csv file
2 views (last 30 days)
Show older comments
Hello,
I am having problem reading in this file to matlab.
filename = 'Aluminum3.2_RawData_1.csv';
deliminator = ',';
Matvarden = dlmread(filename, deliminator,[ 50 0 10000 4]);
I want to get the all the numeric data from the file, trying to use dlmread. Here just as a test i tried row 50 --> 10000.
But just keep on getting "Mismatch between file and format character vector.
Trouble reading 'Numeric' field from file (row number 1, field number 3) ==> ;0,00;0,00000;-340,00\n"
And I just dont get it, there should only be Numeric values from row 50--> 10 000.
Does anyone have a solution to this?
0 Comments
Answers (2)
Jeremy Hughes
on 3 Feb 2019
Your CSV is a semicolon delimited file with comma as the decimal separator character.
This ought to work
opts = detectImportoptions(filename,'Delimiter',';')
opts = setvartype(opts,'double');
opts = setvaropts(opts,'DecimalSeparator',',');
opts.DataLines = [50 10000]; % if you want just those rows.
T = readtable(filename,opts);
And if you want a matrix
A = T.Variables
0 Comments
Satoshi Kobayashi
on 3 Feb 2019
Your csv file includes semicolons in the range.
Dlmread cannot use two deliminators.
I recommend you to use textscan.
fileID = fopen(filename);
c = textscan(fileID,'%s','EndOfLine','\r\n','Delimiter',{',',';'},'HeaderLines',26);
fclose(fileID);
C = reshape(c{1},8,[])';
M = str2double(C);
3 Comments
Satoshi Kobayashi
on 4 Feb 2019
If the total number of elements is 156318, the data is not regular.
You can get whole data as cells. You can get any infomation from it.
fileID = fopen(filename);
C01=textscan(fileID,'%s','EndOfLine','\r\n');
fclose(fileID);
for p=1:length(C01{1})
C02=textscan(C01{1}{p},'%s','Delimiter',{',',';'});
C(p,1:length(C02{1}))=C02{1}';
end
See Also
Categories
Find more on Text Files in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!