逐行文本数据读取和在Matlab中执行简单计算

时间:2012-07-12 14:10:31

标签: matlab file-io

我最近开始使用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####

1 个答案:

答案 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

你继续思考如何进行乘法和寻址以及何时停止添加事物的决定。