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フォームにあります...しかし、データの行の1つを読み取って表示しようとすると、表示Matlabできませんか?

4

2 に答える 2

0

この手順に従います (最初の 2 つのテキスト行だけですが、ファイル全体に拡張可能です)。

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);

このようにして、各テキスト行の属性を一意の配列に格納します。

これが役立つことを願っています。

于 2012-11-24T16:26:16.813 に答える
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。その場合は、関連情報 (この場合は 3 つの数字) を抽出します。

これで、同じことを行って情報を抽出し、Accel操作を行うことができます。目標を達成するために、コードを簡単に編集し、行を追加および削除できます。

これが役立つことを願っています。

于 2012-11-24T14:38:21.417 に答える