我的数据文件是这样的(它是一个csv,分隔符是','):
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
我想用textscan来读取它们。下面是我的代码:
clear;close all;
fid=fopen('./test.csv');
data = textscan(fid, '%s %s %f %f %f','Delimiter',',');
fclose(fid);
我不明白,为什么在运行代码后,' data‘是这样的:data=
{1x1 cell} {1x1 cell} [0x1 double] [0x1 double] [0x1 double]
然后,如果我打印出数据{1}{1}或数据{1},输出是: ID。似乎除了前两个标题外,数据中没有存储任何内容。
但是这段代码在Octave中工作得很好……我是confused....Please help!谢谢!
发布于 2016-06-25 22:46:08
%%您可以尝试下面的代码(改编自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');
https://stackoverflow.com/questions/38023850
复制相似问题