2012-07-12 45 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

相關問題