我最近开始使用Matlab。我只知道基本的matlab操作。所以,我正在努力解决以下问题。我很感激有人的帮助。
我有一个下面格式的文本文件,其记录每次都会根据CoorsID更新。我需要一个接一个地考虑每一行(维护CoorsID)并将定时值乘以10为walk,12为urbanPuTLLLL,13为urbanPuTDDDD,14为urbanPuTBus,然后根据walk和其他选项保存在新矩阵中,直到距离值的总和= = 18917.70763。
我做了那个将数据集作为matlab中的矩阵,这很容易。但是,我甚至无法通过逐行计算找出任何线索。高级感谢您的专家建议。
-saniul
###NumbersID CoorsID Distance Timed Trailinformation###
###33 0 0 0 walk###
###33 1 1.881326228 0.152869117 walk####
###33 2 2.861352906 2.211478513 urbanPuTLLLL####
###33 3 2.894228468 2.381984857 urbanPuTLLLL####
###33 4 3.77420476 3.807208533 urbanPuTDDDD####
###33 5 3.893702709 3.911981757 urbanPuTDDDD####
###33 6 3.934894721 4.022707315 urbanPuTBus####
###33 7 4.230054787 4.131792708 urbanPuTBus####
答案 0 :(得分:0)
首先,我将您在问题中显示的数据放入名为test.m
的文件中。然后这段代码将其读入Matlab:
fid = fopen('test.m','r');
L=fgetl(fid); % gets first line "header"
L=fgetl(fid); % gets first data line
I=1;
while ~isnumeric(L) && L(1)~=-1 % fgetl(fid) returns -1 at end of file
A(I,1:5) = textscan(L,'###%d %d %f %f %[^#]');
L = fgetl(fid);
I=I+1;
end
使用doc fgetl
打开帮助窗口以阅读fgetl
,然后您可以阅读其他命令。
A是一个单元格数组,其中包含所有值。请doc cell
阅读这些内容。
在doc
中查看textscan
,了解我所做的输入格式。 ###%d
表示“跳过三个#然后将其余部分转换为整数”。 %[^#]
意味着“除了#以外的所有内容”。
从那里,您可以访问A的不同元素,因此A{3,4}
是存储在名为A
的单元格数组的第3行第4列中的数字,它是2.211478513
你继续思考如何进行乘法和寻址以及何时停止添加事物的决定。