export csv file without NaN values

6 ビュー (過去 30 日間)
joseph Frank
joseph Frank 2013 年 9 月 28 日
コメント済み: Elena Bertseva 2017 年 6 月 2 日
Hi,
I am using the following code:
filename='AllFirms.csv';
%write string to csv
fileID = fopen(filename,'wt');
[rows, columns] = size(DATAtxt);
for index = 1:rows
fprintf(fileID, '%s,', DATAtxt{index,1:end-1});
fprintf(fileID, '%s\n', DATAtxt{index,end});
end
fclose(fileID);
%write numerical data to csv
dlmwrite(filename, DATA,'-append', 'delimiter', ',');
where DATA is a numeric matrix and DATAtxt contains the header names of the columns. This code ,however, writes NaN values which causes me problems later on . How can I export these NaN values as empty ?

回答 (2 件)

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 9 月 28 日
編集済み: Azzi Abdelmalek 2013 年 9 月 28 日
DATA(isnan(DATA))=0
  3 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 9 月 28 日
% convert DATA to a cell array
DATA1=num2cell(DATA)
DATA1(isnan(DATA))={[]}
Then export DATA1
Elena Bertseva
Elena Bertseva 2017 年 6 月 2 日
Nice idea, but in my case, when the NaNs are on the ends of the lines and rows, dlmwrite gives: "The input cell array cannot be converted to a matrix."

サインインしてコメントする。


Image Analyst
Image Analyst 2013 年 9 月 28 日
Give an example of a line where you're writing data that is nan. All I see is the first part where you write the string data but I don't know how you want the numerical data. For example, let's say DATA = [1,2,nan, 4,5]. Do you want
1,2,,4,5
or do you want
1,2,4,5
in the csv file? And why can't you just write it out a number at a time using isnan() and fprintf()? You don't have to use dlmwrite() you know.

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by