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

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

댓글을 달려면 로그인하십시오.

채택된 답변

michio
michio 2019년 10월 29일
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
rei shimizu
rei shimizu 2019년 10월 30일
度々申し訳ございません。
以下の図のように、座標のデータを表示させてみると、元データには存在しないx座標、y座標、z座標の数値の組み合わせが表示されました。
これはもともとこのような仕様なのでしょうか?
念のため元データも添付しておきます。
matlab質問4.png
michio
michio 2019년 10월 31일
そうですね。。
xlin6 = linspace(min(x6),max(x6),76);
ylin6 = linspace(min(y6),max(y6),76);
[X6,Y6] = meshgrid(xlin6,ylin6);
の部分、xlin6, ylin6 それぞれ個別にみるとデータに存在するデータ点ですが、2次元で見るとデータに含まれない部分も出てくると思います。'v4' 以外の手法だと、その存在しない部分が NaN で返されているはずです。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 グラフィックス出力のターゲットの指定에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!