映画のエンドロール観る派?観ない派?

こんにちは、MATLAB初心者の者です。
あるデータの処理をしなくてはならないのですがどのようにプログラムを作ってよいか分からず困っています。

データの内容はこのような数字が並んでいます。
522344
527870010500115000980009800079000780008000101000
529970009800119001040008900083000910008800101000
523800003010700120001120010000090001010010700117
・・・・・・

これを1行目の3~4桁、5~6桁を取り出し、2行目の3~5桁、6~8桁、9~11桁・・・と3桁づつを1行目から取り出した数字の後に取り出したいのです。
23 44 787
23 44 001
23 44 050
23 44 011
23 44 500
23 44 098
・・・・・・

3行目以降も同じ方法です。
23 44 997
23 44 000
23 44 980
23 44 011
23 44 900
・・・・・・

説明が下手ですみません。
他の言語で作成した方が早いとは思いますし、こんな簡単なことも出来ないのに使うなとお叱りを受けそうなのですがMATLABでやらなければならない事情があり、困ってしまいこちらに質問する事にしました。
どうかよろしくお願いします。

A 回答 (2件)

今はMATLABは使用しておらず使える環境にも無いのですが、


MATLABの質問には解答が付きにくいようですので、
こんな私がとりあえずアドバイスさせていただきます。

まず、
>データの内容はこのような数字が並んでいます。
>522344
>527870010500115000980009800079000780008000101000
これは、ファイルにテキストデータがあるという意味でしょうか?
ファイル入力の方法はお分かりでしょうか?

そして、
>...数字の後に取り出したいのです。
>23 44 787
>23 44 001
>23 44 050
これは、セル配列を作成するのかマトリックス変数に入力するのか、
ファイル出力したいという意味なのかを明らかにしていただければと
思います。

この回答への補足

もう諦め掛けていたので本当にありがとうございます!

はい、そうです。
データはファイルにテキストデータがあるという意味です。

ファイルの入力方法とはこの事でしょうか?
fname1='523800.MEM';
fname2='523800.txt';
fid1=fopen(fname1,'r')
fid2=fopen(fname2,'w')

2つ目の問いですが、ファイル出力したいという意味です。

>23 44 787
>23 44 001
>23 44 050
これは緯度 経度 標高のことなんです。
理由があって標高のみのデータを、緯度経度標高の3次メッシュのデータに直したいのです。

頓珍漢な返答をしてしまっていたらすみません。
どうかよろしくお願いします。

補足日時:2007/04/16 11:26
    • good
    • 0

とりあえず、以下のようなMファイルを作成していただけば


ファイル変換可能かと思われます。
現在の私は実行環境を持っておらず、全く確認検証を行って
おりませんので、ダミーデータでご確認ください。

また、コメントは省略させていただいておりますので、
間違い,誤処理,ご不明な点等がありましたら、ご指摘ください。


function fileConverter( inputFilename, outputFilename )
  inputID = fopen( inputFilename, 'rt' );
  outputID = fopen( outputFilename, 'wt' );
  inputHeader = fgetl( inputID );
  x = inputHeader(3:4);
  y = inputHeader(5:6);
  while ~feof( inputID );
    inputLineData = fgetl( inputID );
    for pointer = 2:3:lenght(inputLineData);
      z = inputLineData( pointer : pointer + 3 - 1 );
      fprintf( outputID, '%s %s %s', x, y, z );
    end
  end
  fclose( inputID );
  fclose( outputID );

なお、投稿でインデントを有効にするため行頭の半角スペースを
全角スペースに変換していますので、Copy&Pasteした場合は、
スペースを逆変換してください。
    • good
    • 0
この回答へのお礼

御礼が遅くなってしまい申し訳ありませんでした!
これを参考にして頑張ってやってみます。
わざわざ、こんなに丁寧な回答をしていただき本当にありがとうございました。

お礼日時:2007/04/19 13:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!