0

我最近开始使用 Matlab。我只知道基本的matlab操作。所以,我正在努力解决以下问题。我会很感激有人的帮助。

我有一个格式如下的文本文件,预计每次都会根据 CoorsID 更新其记录。我需要一个接一个地考虑每一行(维护 CoorsID),​​并将计时值乘以 10 表示步行,12 表示 urbanPuTLLLL,13 表示 urbanPuTDDDD 和 14 表示 urbanPuTBus,然后根据 walk 和其他选项保存在新矩阵中,直到距离值的总和变为=18917.70763。

我这样做是把数据集作为矩阵放在 matlab 中,这相当容易。但是,我什至无法找出任何线索来逐行计算。高级 感谢您的专家建议。

-萨尼尔

###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####
4

1 回答 1

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阅读这些。

查看docfortextscan以了解我所做的输入格式。 ###%d意思是“跳过三个 # 然后将其余的转换为整数。” %[^#]意思是“阅读所有内容,除了 #。”

从那里,您可以访问 A 的不同元素,A{3,4}存储在名为 的元胞数组的第 3 行第 4 列中的数字A也是2.211478513

您继续并弄清楚如何进行乘法和寻址以及何时停止添加事物的决定。

于 2012-07-13T01:19:30.913 回答