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

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

Sign in to comment.

Accepted Answer

michio
michio on 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 Comments
rei shimizu
rei shimizu on 30 Oct 2019
度々申し訳ございません。
以下の図のように、座標のデータを表示させてみると、元データには存在しないx座標、y座標、z座標の数値の組み合わせが表示されました。
これはもともとこのような仕様なのでしょうか?
念のため元データも添付しておきます。
matlab質問4.png
michio
michio on 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 で返されているはずです。

Sign in to comment.

More Answers (0)

Categories

Find more on Matrix Indexing in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!