0

最近、Matlab を使い始めました。私は基本的なmatlab操作しか知らないので、次の問題に苦しんでいます。誰かの親切な助けをいただければ幸いです。

以下の形式のテキスト ファイルがあり、そのレコードは CoorsID に従って毎回更新されると予想されます。各行を 1 つずつ考慮し (CoorsID を維持)、timed 値に walk の場合は 10、urbanPuTLLLL の場合は 12、urbanPuTDDDD の場合は 13、urbanPuTBus の場合は 14 を掛けてから、walk およびその他のオプションに従って新しい行列に保存する必要があります。 Distance 値の合計は =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 は、変換されたすべての値を含む cell 配列です。doc cellこれらについて読んでください 。

docforを見て、textscan私が行った入力フォーマットについて読んでください。 ###%d「3 つ飛ばして # 残りを整数に変換する」という意味です。 %[^#]「#を除くすべてを読む」という意味です。

そこから、A のさまざまな要素にアクセスできるので、A{3,4}という名前のセル配列の 3 行 4 列目に格納されている数値はA2.211478513

先に進んで、乗算とアドレス指定を行う方法と、追加をいつ停止するかを決定する方法を理解します。

于 2012-07-13T01:19:30.913 に答える