csvファイルから3次元のグラフをsurfでつくりましたが任意の点を強調させるためにマーカーなど利用したいです。
20 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Hernia Baby
le 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')
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur 離散データ プロット dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!