필터 지우기
필터 지우기

複数データの結合方法について

조회 수: 35 (최근 30일)
Takaki Fujii
Takaki Fujii 2018년 11월 1일
댓글: Kazuya 2018년 11월 6일
複数のテキストファイルを結合して一つのテキストファイルにする方法を教えてください。 下記コードのように、ある任意の日付時刻における行列データから特定の要素の値を抽出し、その値をテキストファイルに保存しました。これをすべての日付で行うと大量のファイルがあり、 このファイルの値を一つの列(行)ベクトルにまとめplotで図化したいと考えています。 色々な方法を試しましたがファイルが上書きされてしまったり、うまくいきません。逐一、値をファイルに保存するやり方でなくとも構いませんので、ご教授いただければ幸いです。
for yyyy = 2012:2012
for mm = 1:1
for dd = 1:31
for hh = 0:6:18%6時間ごとのデータ
yyyymmddhh = (yyyy.')*10^6+(mm.')*10^4+(dd.')*10^2+(hh.');
yyyymmddhh = num2str(yyyymmddhh);%日付時間の計算です
U=dlmread(['U_speed',num2str(yyyymmddhh),'.txt'],'',4,0);%日付時間に対応したファイルの読み込みです
uspeed = U(241,268);%241,268が抽出したい行列の要素です
save('filename',num2str(yyyymmddhh),'.txt','uspeed','-ascii');%任意の日付時間での行列要素をテキストファイルに保存しました
end
end
end
end
  댓글 수: 2
Kazuya
Kazuya 2018년 11월 4일
ファイルの数にもよりますが、逐一保存するよりは必要な点だけを変数に確保しておいてプロットする方法がよさそうです。
描画すべき点は各ファイルから1点だけ、それも常に(241,268)の位置にあるものだけですか?その場合プロットの横軸はファイル名に含まれる時刻ですか?
Takaki Fujii
Takaki Fujii 2018년 11월 6일
コメントありがとうございます。返答が遅くなってすみません。1点だけ常に(241,268)の位置にあります。横軸はファイル名に含まれる時刻になります。

댓글을 달려면 로그인하십시오.

채택된 답변

Etsuo Maeda
Etsuo Maeda 2018년 11월 5일
上書きしてしまう・・・というところは、saveの使い方を見直す必要がありそうです。
コードを見る限りは読むファイルと同じ名前でsaveしてしまっています。
汎用性を考えると、datetimeで時間を作ったほうが楽だと思います。
clear; close all;
% time duration
T1 = datetime(2012, 1, 1, 0, 0, 0); % 2012/1/1 00:00:00
T2 = datetime(2012, 1, 3, 0, 0, 0); % 2012/1/3 00:00:00
dt = hours(6); % par 6 hours
Times = T1:dt:T2;
% create characters
FormatOut = 'yyyymmddHH';
TimeStr = datestr(Times, FormatOut);
sz = size(TimeStr);
% create dummy data
for k = 1:sz(1)
A = rand(500)*k;
save([TimeStr(k, :), '.txt'], 'A', '-ascii')
end
% read dummy data
for k = 1:sz(1)
M(k, :) = dlmread([TimeStr(k, :), '.txt'], '', [241 268 241 268]);
end
% plot data
plot(Times, M)
くらいの感じでいいんじゃないでしょうか。
HTH
  댓글 수: 1
Kazuya
Kazuya 2018년 11월 6일
細かい点ですがハマってしまわないように・・補足だけ。 もともと
U=dlmread(['U_speed',num2str(yyyymmddhh),'.txt'],'',4,0);
で 4行飛ばして読み込んでからの 241行268列目のデータなので、、その点だけピンポイントで読み込むなら
M(k, :) = dlmread([TimeStr(k, :), '.txt'], '', [245 268 245 268]);
ですかね?
> Takaki Fujii さん
細かいところは試してみて修正してみてください。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 日付と時刻에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!