データが正方行列では​ない場合の3Dグラフ​の作成について

10 vues (au cours des 30 derniers jours)
rei shimizu
rei shimizu le 29 Oct 2019
Commenté : michio le 31 Oct 2019
卒業研究で急遽matlabを使用することとなったため、matlabの知識に関してとても疎いです。
76×3行列の3Dグラフ(surfなど)の作成方法について教えていただきたいです。
1列ずつ3つのデータに分けて、それをそれぞれ正方行列に変換してからsurf関数を使うのかと考えているのですがどうも上手くいきません。
  4 commentaires
Kazuya
Kazuya le 29 Oct 2019
できればデータはファイル(csv, Excel, mat など) の添付で、コードとエラーメッセージはコメント蘭にコピペで投稿頂けると助かります。
実際にMATLABで試してみた方が速いのですが、画像から情報を吸い出すのは多少手間でして。
rei shimizu
rei shimizu le 30 Oct 2019
kazuyaさんお返事ありがとうございます。
元データはこちらになります。
コードとエラーメッセージについては、大学のパソコンでmatlabを使用しているためすぐに投稿できないかもしれないです。
協力していただいてるのに申し訳ございません。

Connectez-vous pour commenter.

Réponse acceptée

michio
michio le 29 Oct 2019
matlab質問2.PNG のコードの中で、
x = A(:,1);
y = A(:,1);
z = A(:,1);
となっているところ、
x = A(:,1);
y = A(:,2);
z = A(:,3);
に変えるとよいように思います。
適当なダミーデータで実行してみると、
x = rand(100,1);
y = rand(100,1);
z = sin(2*pi*x)+cos(2*pi*y);
xlin = linspace(min(x),max(x),76);
ylin = linspace(min(y),max(y),76);
[X,Y] = meshgrid(xlin,ylin);
Z = griddata(x,y,z,X,Y,'cubic');
surf(X,Y,Z)
untitled.png
こんな感じです。griddata に 'cubic' と入れているのは、データの補間方法を指定しています。何も指定しなければ 'linear' ということで、線形補間を行います。
  7 commentaires
rei shimizu
rei shimizu le 30 Oct 2019
度々申し訳ございません。
以下の図のように、座標のデータを表示させてみると、元データには存在しないx座標、y座標、z座標の数値の組み合わせが表示されました。
これはもともとこのような仕様なのでしょうか?
念のため元データも添付しておきます。
matlab質問4.png
michio
michio le 31 Oct 2019
そうですね。。
xlin6 = linspace(min(x6),max(x6),76);
ylin6 = linspace(min(y6),max(y6),76);
[X6,Y6] = meshgrid(xlin6,ylin6);
の部分、xlin6, ylin6 それぞれ個別にみるとデータに存在するデータ点ですが、2次元で見るとデータに含まれない部分も出てくると思います。'v4' 以外の手法だと、その存在しない部分が NaN で返されているはずです。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur グラフィックス出力のターゲットの指定 dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!