2012-11-24 63 views
0
Reading: 2012-11-14 17:51:30.188000 
Orient: 0.128638193011,0.485114246607,0.864937186241,0.347732484341 
Gyro: -0.0267551075667,0.0950478315353,-0.131820827723 
Accel: -0.199179515243,-0.979403376579,-0.0331153795123 
Compass: 0.819754898548,-0.555078268051,-0.141031831503 
Reading: 2012-11-14 17:51:30.300000 
Orient: 0.102125242352,0.50507569313,0.85701161623,0.353488951921 
Gyro: 0.0196692775935,0.134142056108,0.073423832655 
Accel: -0.197360157967,-0.978824615479,-0.0543242283165 
Compass: 0.823461055756,-0.549835622311,-0.139974221587 

正如上面是我的數據是在.txt形式......但是當我嘗試讀取數據線Matlab來顯示它的一個,我不管理顯示?失敗在文本閱讀在MATLAB

+2

你如何閱讀它?你能否發佈相關的代碼? – Maroun

+0

fid = fopen('C:\ Users \ KaeBin \ Desktop \ log.txt'); [name:,ax,ay,az] = textread(fid,'%s%f%f'f','headerlines',0) 我試過這種方法...但是得到錯誤 – Ambbie

回答

0

我不會給你一個解決方案,但我會指導你。

fid = fopen('C:\Users\KaeBin\Desktop\log.txt'); 
while ~feof(fid) 
    line = fgets(fid); 
    title = sscanf(line, ['%s:']); 
    if strcmp(title, 'Gyro:')==1 
    [name num]=strtok(line, ':'); 
    num=strtok(num, ':'); 
    nums_of_gyro=sscanf(num, '%f, %f, %f') 
    .... 
    .... 
    end 
    ... 
    ... 
end 

說明:

我掃描從第一行的文本文件,直到最後:

  • while ~feof(fid)我讀入line從文件中的每一行。
  • title = sscanf(line, ['%s:']);這裏我提取文本文件中的第一個工作。
  • if strcmp(title, 'Gyro:')==1現在我檢查第一項工作是否是Gyro。如果是這樣,那麼我爲我提取相關信息(在這裏是三個數字)。

現在您可以執行相同的操作,從Accel中提取信息並進行一些操作。 您可以輕鬆編輯代碼,添加和刪除線條以實現您的目標。

我希望這會有所幫助。

+0

嗨,Maroun .. 。很高興見到你。實際上我想讀取來自Accel和Gyro的3軸數據來計算它們的距離 例如 Accel:-0.199179515243,-0.979403376579,-0.0331153795123 我想提取Accel中的值。但是,從傳感器接收的數據比上面的數據多。那麼,如何提取它的具體數據呢?謝謝... ^^ – Ambbie

+0

@KaeBinAmbrose看到我編輯的答案。 – Maroun

+0

Matlab會更好地解釋它。基本上它被用來解析一個字符串。在這裏你去:http://www.mathworks.com/help/matlab/ref/strtok.html – Maroun

0

我會按照這個程序(只是前兩個文本行,而是擴展到整個文件):

clc, clear all, close all 

fid = fopen(filename,'r'); 

A = textscan(fid,'%s','Delimiter','\r'); 

A = A{1}; 

a = A{1}(length('Reading')+2:end); 
b = A{2}(length('Orient')+2:end); 

這樣,您將每一行文本的屬性存儲到一個獨特的陣列。

我希望這會有所幫助。

+0

謝謝你,我reali欣賞... ^^ – Ambbie