这是我的数据文件的样子(它是一个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中完美运行....我很困惑....请帮忙!谢谢!
答案 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');