質問: データが正方行列ではない場合の3dグラフの作成について 卒業研究で急遽matlabを使用することとなったため、matlabの知識に関してとても疎いです。 76×3行列の3dグラフ(surfなど)の作成方法について教えていただきたいです。 1列ずつ3つのデータに分けて、それをそれぞれ正方行列に変換してからsurf関数を使うのかと考えているのですがどうも上手くいきません。
回答: 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) こんな感じです。griddata に 'cubic' と入れているのは、データの補間方法を指定しています。何も指定しなければ 'linear' ということで、線形補間を行います。 参考:https://jp.mathworks.com/help/matlab/ref/griddata.html