csvファイルから3次元のグラフをsurfでつくりましたが任意の点を強調させるためにマーカーなど利用したいです。
28 views (last 30 days)
Show older comments
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]');
0 Comments
Accepted Answer
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{:}で各列の要素を取り出せるからです。
hold on
n = 7;
P = num2cell(b(n,:))
scatter3(P{:},30,'r','filled')
More Answers (0)
See Also
Categories
Find more on 離散データ プロット 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!