X軸のサンプリングが異なるXYZデータをカラーマップ表示する方法
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
1×mの配列データXおよびYがあり、Xが座標、YがそのX座標に対応するある測定データです
このデータがZ軸方向にある間隔でn個存在するのですが、各Z座標に対応するX座標データのサンプリングとデータレンジがまちまちです。
このデータをXZ平面でYの値に対応するカラーマップとして表示したいのですがどうしたら良いでしょうか。
一通りのToolboxは使用可能です。
0 Kommentare
Antworten (1)
Hernia Baby
am 11 Sep. 2021
z軸に相当するデータを n とします
n = 0:10:50;
ここでは x, yのデータを A という cell型配列に格納します
cell型にしないとサイズが違うので怒られます
データ自体は既知だと思うので、最後の2行のように格納するんだって思っていただければいいです
for i = 1:length(n)
m = n(i) + 50;
x_i = randi(m);
x_f = 200 + m;
x = transpose(x_i:x_f);
y = sin(2*(pi*x - 2*n(i))/200);
A{i,1} = x; % ← 実際はここだけ使う
A{i,2} = y; % ← 実際はここだけ使う
end
Aの中身を見てみましょうか
A
ここで x の最小最大を求めます
そして5ステップ刻みの x_q を作成します
xi_min = min(cellfun(@(x) x(1,1), A(:,1)));
xf_max = max(cellfun(@(x) x(end,1), A(:,1)));
x_q = xi_min:5:xf_max;
interp1 でデータサイズや刻み幅を合わせます
B = cellfun(@(x,y) interp1(x,y,x_q), A(:,1),A(:,2),'UniformOutput',false);
図示します
B = cell2mat(B);
[X, Z] = meshgrid(x_q,n);
surf(X,Z,B)
view(2);
xlabel('X軸'), ylabel('Z軸');
2 Kommentare
Hernia Baby
am 14 Sep. 2021
カラーコンターを出すためにinterp1で補間しています。
interp1での補間なしですと、以下の手順が想定されます。
① 最も小さい分解能(Δx)に刻む
このときΔnは他の分解能に対してk×Δxである必要がある
② この刻み幅に対してXの最小最大のサイズにNaNを作成する
③ xのどこかには必ず対応するyがはいるのでindex型でyをNaNに当てはめていく
④ X_i~X_i+1まで(k-1)×Δx分だけNaNが残っているので、それをYiで埋める
⑤ これをZ分繰り返す
⓺ meshgridでメッシュを切る
⑦ コンター作成
Siehe auch
Kategorien
Mehr zu 表面プロットとメッシュ プロット finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!