Matlab:readin csv有多种数据类型 - 代码有什么问题

时间:2016-06-25 00:34:24

标签: matlab csv

这是我的数据文件的样子(它是一个csv,diaimiter是','):

ID  Date     X  Y   Z
2003    Mon Mar 21 11:01:53 EDT 2016    -0.002261639    -0.002261639    -0.003986359
2003    Mon Mar 21 11:01:54 EDT 2016    0.010383129 0.010383129 0.145069122
2003    Mon Mar 21 11:01:55 EDT 2016    0.082943439 0.082943439 0.022849083
2003    Mon Mar 21 11:01:57 EDT 2016    0.070415497 0.070415497 0.234290123

我想用textcan阅读它们。这是我的代码:

clear;close all;

fid=fopen('./test.csv');
data = textscan(fid, '%s %s %f %f %f','Delimiter',',');
fclose(fid);

我不明白,为什么在运行代码后,数据'就好像: data =

{1x1 cell}    {1x1 cell}    [0x1 double]    [0x1 double]    [0x1 double]

然后,如果我打印出数据{1} {1}或数据{1},则输出为:ID。 除了前两个标题之外,似乎没有任何内容存储在数据中....

但是这个代码在Octave中完美运行....我很困惑....请帮忙!谢谢!

1 个答案:

答案 0 :(得分:0)

%%您可以尝试以下代码(改编自MATLAB导入工具)

%%初始化变量。

filename = 'your_comma_delimited_file.csv';
delimiter = ',';
startRow = 2;

%%每行文本的格式字符串:

formatSpec = '%f%s%f%f%f%[^\n\r]';

%%打开文本文件。

fileID = fopen(filename,'r');

%%根据格式字符串读取数据列。

dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'HeaderLines' ,startRow-1, 'ReturnOnError', false);

%%关闭文本文件。

fclose(fileID);

%%将导入的数组分配给列变量名称

ID = dataArray{:, 1};
Date = dataArray{:, 2};
X = dataArray{:, 3};
Y = dataArray{:, 4};
Z = dataArray{:, 5};

%%清除临时变量

clearvars filename delimiter startRow formatSpec fileID dataArray ans;

%%或者,您可以使用一行代码导入数据:

%(1)将文件另存为Excel文件(.xlsx)

%(2)使用readtable导入文件

data = readtable('saved_excel_file.xlsx');