我是matlab的新手。我有一个大型的csv文件,我也可以将其作为文本文件。此文件由整数和符号行组成,例如 - ,:和其他符号。我希望能够读取此文件的每一行并以数字方式对其进行排序。例如:
2000-01-08T16:47:32.200Z,-16.84,-173.93,162.7,kiloMETER,6.7,MB,CMT
我需要将前三组数字视为日期,将T00:00:00视为一天中的时间,然后将线条从最早到最晚排序。每一行都具有完全相同的格式。
提前感谢您的帮助!
答案 0 :(得分:0)
这是针对您具体案例的解决方案:
my_data=importdata('test_1.txt');
tmp_data= cell(numel(my_data),7);
tmp_data(:,7) = my_data;
for k=1:numel(my_data)
tmp_datapoint = my_data{k,1};
tmp_year = str2double(tmp_datapoint(1:4));
tmp_month = str2double(tmp_datapoint(6:7));
tmp_day = str2double(tmp_datapoint(9:10));
tmp_hour = str2double(tmp_datapoint(12:13));
tmp_minute = str2double(tmp_datapoint(15:16));
tmp_second = str2double(tmp_datapoint(18:19));
tmp_data(k,1:6) = {tmp_year,tmp_month, tmp_day, tmp_hour, tmp_minute, tmp_second};
end
tmp_data = sortrows(tmp_data, [1, 2, 3, 4, 5, 6]);
sorted_data = tmp_data(:,7);
Importdata会保存您的数据,例如
2000-01-08T16:47:32.200Z, -16.84, -173.93, 162.7, kiloMETER, 6.7, MB, CMT
2000-01-04T19:47:32.200Z, -16.84, -193.93, 162.7, kiloMETER, 6.7, MB, CMT
2000-01-08T16:47:35.200Z, -16.84, -173.93, 165.7, kiloMETER, 6.7, MB, CMT
...
最后sorted_data
包含您的排序数据,如:
2000-01-04T19:47:32.200Z, -16.84, -193.93, 162.7, kiloMETER, 6.7, MB, CMT
2000-01-08T16:47:32.200Z, -16.84, -173.93, 162.7, kiloMETER, 6.7, MB, CMT
2000-01-08T16:47:35.200Z, -16.84, -173.93, 165.7, kiloMETER, 6.7, MB, CMT
...
事实上,您的数据总是在单元格矩阵中保存为字符串。因此,如果您对地址有任何问题,请检查这些变量类型。