csvファイルから3​次元のグラフをsur​fでつくりましたが任​意の点を強調させるた​めにマーカーなど利用​したいです。

15 views (last 30 days)
Neige
Neige on 9 Oct 2021
Commented: Neige on 11 Oct 2021
Matlab初心者です。
n行3列のデータがcsvファイルにあります。こちらをreadmatrixでインポートした後、1列目をx軸、2列目をy軸、3列目をz軸としてsurf関数で3次元のグラフを作りました。
しかしそのグラフ上で任意の点(例えば7行目の3列目、すなわちx軸に応じたz軸の値)を強調してグラフ上に表したいのですが方法がわかりません。csvファイル、表示されたグラフ、コードを貼っておきます。(ちなみにcsvファイルの数値は私が適当に決めたものです。
ご回答のほどよろしくお願い致します。
b = readmatrix('Book7.csv');
figure(1)
x = [b(:,1)]
y = [b(:,2)]
z = [b(:,3)]
xlin = linspace(0,8,18);
ylin = linspace(0,5,18);
[X,Y] = meshgrid(xlin, ylin);
Z = griddata(x,y,z,X,Y);
surf(X,Y,Z)
xlabel('Slope Angle [deg]');
ylabel('Attitude Angle [deg]');
zlabel('Displacement [mm]');

Accepted Answer

Hernia Baby
Hernia Baby on 10 Oct 2021
面の図を保持して点をプロットしましょう。
b = readmatrix('Book7.csv');
figure(1);
x = [b(:,1)];
y = [b(:,2)];
z = [b(:,3)];
xlin = linspace(0,8,18);
ylin = linspace(0,5,18);
[X,Y] = meshgrid(xlin, ylin);
Z = griddata(x,y,z,X,Y);
分かりやすくするため、面と線の透明度を設定します
surf(X,Y,Z,'FaceAlpha',0.3,'EdgeAlpha',0.3);
xlabel('Slope Angle [deg]');
ylabel('Attitude Angle [deg]');
zlabel('Displacement [mm]');
ここから図を保持し、任意の数( n = 7 )のx,y,z成分を取り出します
cell型にしているのはP{:}で各列の要素を取り出せるからです。
3次元の点は scatter3 で図示します。
hold on
n = 7;
P = num2cell(b(n,:))
P = 1×3 cell array
{[6]} {[0]} {[39]}
scatter3(P{:},30,'r','filled')
  1 Comment
Neige
Neige on 11 Oct 2021
ご回答ありがとうございます。無事に表示することができました!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!