2012-07-12 43 views
0

我最近已经开始使用Matlab。我只知道基本的matlab操作。所以,我正在努力解决以下问题。我将不胜感激别人的善意帮助。逐行文本数据读取并在Matlab中执行简单计算

我有一个以下格式的文本文件,根据CoorsID,它的记录每次都会更新。我需要逐一考虑每一行(维护CoorsID),​​并将计时值乘以10,步行,12为城市PuLLLL,13为城市PuDDDD,14为城市PuTBus,然后根据步行和其他选项保存在新矩阵中,直到距离值的总和= 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

如果你已经解决了将文本文件读入矩阵的问题,为什么不向我们展示矩阵并解释你在矩阵方面仍然面临的问题?文本文件对您的问题有什么相关性?并向我们​​展示您已经编写的Matlab代码。 – 2012-07-12 14:33:13

回答

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{3,4}是存储在第三行中的号码,命名为A单元阵列的第4列,这是2.211478513

你先走一步,并找出如何做乘法和寻址以及何时停止添加事物的决定。

+0

非常感谢您的非常有用的建议。 – Sani 2012-07-14 20:16:44

+0

@Sani upvote有用的答案,不要评论他们是有用的。 – mwengler 2012-07-16 14:15:49

相关问题