我想阅读一个有不规则矩阵的csv文件。 我需要读的是迭代方式的A列(Dates)和B列(Measurements)。 以下是一个示例格式。
A, B, C, A, B, C, A, B, C ... ...
4/1/1970, 2, 5, 3/1/1971, 6, 5, 2/1/1972, 7, 5 ... ...
7/1/1970, 3, 5, 7/1/1971, 2, 5, 4/1/1972, 3, 5 ... ...
, , , 4/1/1971, 8, 5, 5/1/1972, 6, 5 ... ... continued with this format
, , , , , , 7/1/1972, 8, 5
, , , , , , 8/1/1972, 11,5
最终,我想得到
A, B
4/1/1970, 2
7/1/1970, 3
3/1/1971, 6
7/1/1971, 2
.
.
有专家可以帮助我吗? 先感谢您。
答案 0 :(得分:0)
您可以使用CSVIMPORT。它将csv文件读入单元格数组或矩阵。
请参阅: http://www.mathworks.com/matlabcentral/fileexchange/23573-csvimport
如果将其读入矩阵M,则可以使用两个for循环轻松遍历数据。警告,我在这里写伪代码,所以它没有经过测试。祝你好运。
for row = 1:size(M,1)
for col = 1:size(M,2)
if M(row,col) != ""
% do some work
答案 1 :(得分:0)
您可以使用textscan
来获取该数据
fid = fopen('data.txt');
A = textscan(fid, '%s%f%f%s%f%f%s%f%f', 'Delimiter', ',', 'Headerlines', 1);
fclose(fid);
A
是一个单元格。日期读取为字符串(%s
),而数字则读取为双精度数(%f
)。如果缺少数字或日期,则分别在NaN
中获得''
或A
。