Filter löschen
Filter löschen

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

20 Ansichten (letzte 30 Tage)
nknknknk
nknknknk am 8 Aug. 2017
Kommentiert: nknknknk am 9 Okt. 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 Kommentar
michio
michio am 8 Aug. 2017
図を質問内に貼り付けてみました。赤丸で記したボタンで貼り付けられますので、是非活用ください :)

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

michio
michio am 8 Aug. 2017
Bearbeitet: michio am 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 Kommentare
nknknknk
nknknknk am 5 Okt. 2017
ご回答ありがとうございます。
imagesc でのカラーマップ表示をしたかったのですが、 contourf を使用して、x軸観測時刻、y軸観測距離[km]の等高線の図(図①)は作成出来ました。ここで加えて質問ですが、図①の等高線の間に色をつける事は可能でしょうか。
図①
nknknknk
nknknknk am 9 Okt. 2017
解決いたしました。 ありがとうございました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!