次元数の異なる配列の三次元グラフの作成について
19 views (last 30 days)
Show older comments
変数x,yがあるとした時に、xは181行1列,yは136行1列の配列であり、x、yに対応するデータ群zが181行136列ある場合にx、yを変数としてzを縦方向にプロット(もしくは曲面)する方法はありますでしょうか
0 Comments
Answers (1)
Atsushi Ueno
on 10 Nov 2023
>xは181行1列,yは136行1列の配列であり、x、yに対応するデータ群zが181行136列ある場合にx、yを変数としてzを縦方向にプロット(もしくは曲面)する方法はありますでしょうか
⇒はい、あります。上記リンク先の Surface and Mesh Plots が該当すると思いますが、mesh や surf 等の3次元プロット関数において、x軸及びy軸の情報として下記の説明があります。
>Z と同じサイズの行列、または長さが n のベクトル ([m,n] = size(Z)) として指定します。X と Y の値を指定しない場合、surf はベクトル (1:n) とベクトル (1:m) を使用します。行列 X と行列 Y を作成するには、関数 meshgrid を使用できます。
つまりこれらの関数は、x軸及びy軸の情報として1次元配列(軸情報)または2次元配列(グリッド情報)のどちらでもOKです。またx軸及びy軸の情報が無い場合でも、それらを自動的に生成してグラフを表示します。
x = (1:181)'; % xは181行1列の1次元配列(ベクトル)
y = (1:136)'; % yは136行1列の1次元配列(ベクトル)
[xm,ym] = meshgrid(x,y); % xm,ym,zは136行181列の2次元配列(行列)
z = sqrt(xm.^2 + ym.^2); % zも同じく136行181列の2次元配列(行列)
mesh(x,y,z) % mesh(xm,ym,z) % mesh(z) % どれでもOK
See Also
Categories
Find more on 2 次元および 3 次元プロット in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!