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

24 visualizaciones (últimos 30 días)
Neige
Neige el 9 de Oct. de 2021
Comentada: Neige el 11 de Oct. de 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]');

Respuesta aceptada

Hernia Baby
Hernia Baby el 10 de Oct. de 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 comentario
Neige
Neige el 11 de Oct. de 2021
ご回答ありがとうございます。無事に表示することができました!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 離散データ プロット en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!