MATLAB Answers


Probelm with 'writecell'

junghyun pyo さんによって質問されました 2019 年 7 月 10 日
最新アクティビティ Guillaume
さんによって コメントされました 2019 年 7 月 15 日
I just want to delet first line form my data.
It's .csv file, and raw data has two line for text and others are number.
This is what i trying to do.
m = readcell('rawdata.csv');
m(1,:) = [];
writecell(m, 'modified_data.csv');
but it doesn't work.
thanks for your help.

  0 件のコメント

サインイン to comment.


2 件の回答

Star Strider
回答者: Star Strider
2019 年 7 月 10 日

Try this:
m = readcell('rawdata.csv');
writecell(m(2:end,:), 'modified_data.csv');
If that does not work, upload (attach) ‘rawdata.csv’ so we can experiment with it.

  1 件のコメント

junghyun pyo 2019 年 7 月 10 日
I just try to do it with your code, but there is some problem.
Because my data has 0 (i guess it is emthy) then using 'writecell' made an error about 'missing type is not supported'
I may handle this error like this
m = readcell('20190529_20_1.csv');
n = table2cell(m(2:end,:));
writetable(n, '20190529_20_1.csv')

サインイン to comment.

回答者: Guillaume
2019 年 7 月 10 日

If the only thing you're trying to do is remove the first line of a text file, then parsing the file (with csvread, readcell, or any similar function) is completely overkill and just slows you down.
filecontent = fileread('rawdata.csv');
without1stline = regexp(filecontent, '(?<=[\n\r]+)[^\n\r].*', 'match', 'once')
fid = fopen('modifed_data.csv', 'w');
fwrite(fid, without1stline);

  2 件のコメント

junghyun pyo 2019 年 7 月 15 日
It works great!
Then i'd like to ask you to how can i use codes that you answer in this topic and the other one(for uigetfile).
I just try to, but it just return filename in file.
Thanks for your help.
[filename, path] = uigetfile('*.csv');
filecontent = fileread(filename);
[~, base, extension] = fileparts(filename);
without1stline = regexp(filecontent, '(?<=[\n\r]+)[^\n\r].*', 'match', 'once');
newfilename = [base, '_modified', extension];
fid = fopen(newfilename, 'w');
fwrite(fid, fullfile(path, newfilename));
2019 年 7 月 15 日
[filename, path] = uigetfile('*.csv'); %ask user for a csv file
assert(~isequal(filename, 0), 'No file selected. Aborting');
filecontent = fileread(fullfile(path, filename)); %read file, using full path
without1stline = regexp(filecontent, '(?<=[\n\r]+)[^\n\r].*', 'match', 'once'); %remove 1st line of file
[~, base, extension] = fileparts(filename); %split input file name into base and extension
newfilename = [base, '_modified', extension]; %append '_modified' to base filename and add extension back
fid = fopen(fullfile(path, newfilename), 'w'); %create new file
fwrite(fid, without1stline);

サインイン to comment.

Translated by