カラーマップを作るには?

80 views (last 30 days)
nknknknk
nknknknk on 8 Aug 2017
Commented: nknknknk on 9 Oct 2017
下記リンク先に表記済みですが、フォルダに1分毎の観測データファイルがあります。
例えば、下記プログラムを実行すると、 2016/10/15/12:30に観測されたデータが x軸:Photoncount,y軸:Attitude[m] のグラフ表示されます(図①)
このフォルダ内の 2016/10/15 21:00-10/16 6:00 のデータを使い、図②のようなカラーマップを作成したいです。
x軸:Time、y軸:Height[m]、カラーバーの値はPhotoncount です。 また、表記の時間間隔:1分,距離分解能:15mです。
どのようなコードになるでしょうか。
急いでおり、丸投げの質問になってしまい大変恐縮ですが、参考によろしくお願い致します。
if true
%ファイル名をフルパスごと取得
DebugFiles = 'C:\Users\ken\Documents\MATLAB\161015\*16A1512.304146'; %期間指定
%指定フォルダ内のファイルをリスト化
D = dir(DebugFiles);
for i=1:length(D)
% ファイルオープン
fid=fopen(D(i).name);
% ヘッダー読み込み
for k = 1:3
headers{k} = fgetl(fid);
end
% データセットの数を取り出し
third_header = sscanf(headers{3},'%f');
num_datasets = third_header(end); %4
% データセットのヘッダーを読み込み
datasetheader = {};
for k = 1:num_datasets
datasetheader{k} = fgetl(fid);
end
fread(fid,2,'uint8') % Read CRLF=13d 10d
% データセットのヘッダーに記載されたデータ分バイナリデータを読み込む
data = {};
for k = 1:num_datasets
dataheader_parsed = sscanf(datasetheader{k},'%d');
num_read = dataheader_parsed(4); %512
[data{k},count] = fread(fid,num_read,'long');
fread(fid,2,'uint8'); % Read CRLF=13d 10d
end
fclose(fid);
% 行列に整形(各データの数が同じ場合は成功)
DataMat = [data{[4]}]; %[1 3] AnalogOn,Off,[2 4] PhotoncountOn,Off
%0~511までの15刻みのベクトルを作成し、そこから100を引く
x = (0:15:511*15) - 100*15;
plot(x,DataMat)
view(90,-90)   %x軸とy軸反転
hold on
end
title('2016/10/15 12:30')
legend('Photoncount Off')
xlabel('Attitude[m]')
ylabel('Photoncount')
 xlim([0 3000])
ylim([7*10^4 10^5])
end
  1 Comment
michio
michio on 8 Aug 2017
図を質問内に貼り付けてみました。赤丸で記したボタンで貼り付けられますので、是非活用ください :)

Sign in to comment.

Accepted Answer

michio
michio on 8 Aug 2017
Edited: michio on 8 Aug 2017
関数としては contourf 関数 で実現できそうな気がしますが、この関数は試してみましたか?
例:
n = 100;
X = linspace(0,10,n);
Y = linspace(0,1,n);
Z = peaks(n);
contourf(X,Y,Z,'LineStyle','none');
colorbar;
上は適当なデータで実際に実行できる形にしていますが、XにTime、YにHeight[m]、そして2次元配列 Z を読み取ったPhotoncountで作成すれば行けると思いますが、いかがでしょう?
  8 Comments
nknknknk
nknknknk on 9 Oct 2017
解決いたしました。 ありがとうございました。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!