X軸のサンプリングが異なるXYZデータをカラーマップ表示する方法
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
1×mの配列データXおよびYがあり、Xが座標、YがそのX座標に対応するある測定データです
このデータがZ軸方向にある間隔でn個存在するのですが、各Z座標に対応するX座標データのサンプリングとデータレンジがまちまちです。
このデータをXZ平面でYの値に対応するカラーマップとして表示したいのですがどうしたら良いでしょうか。
一通りのToolboxは使用可能です。
0 comentarios
Respuestas (1)
Hernia Baby
el 11 de Sept. de 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 comentarios
Hernia Baby
el 14 de Sept. de 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でメッシュを切る
⑦ コンター作成
Ver también
Categorías
Más información sobre 表面プロットとメッシュ プロット en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!