X軸のサンプリングが異なるXYZデータをカラーマップ表示する方法
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
1×mの配列データXおよびYがあり、Xが座標、YがそのX座標に対応するある測定データです
このデータがZ軸方向にある間隔でn個存在するのですが、各Z座標に対応するX座標データのサンプリングとデータレンジがまちまちです。
このデータをXZ平面でYの値に対応するカラーマップとして表示したいのですがどうしたら良いでしょうか。
一通りのToolboxは使用可能です。
0 commentaires
Réponses (1)
Hernia Baby
le 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 commentaires
Hernia Baby
le 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でメッシュを切る
⑦ コンター作成
Voir également
Catégories
En savoir plus sur 表面プロットとメッシュ プロット dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!