1、plot3三維曲線圖。 啓動MATLAB,新建腳本(.m檔案),在腳本編輯區輸入以下代碼,然後儲存執行後,看到三維曲線圖。 close all;clear all;clc z=linspace(0,10,101); x=sin(z);y=cos(z); plot3(x,y,z,'g','LineWidth',2) hold on plot3(x,y,z
不論是在科研工作中,還是在實際工程應用中,常常會遇到三維或者更數據的處理,並且將處理的數據在圖形中顯示出來,MATLAB平臺也提供了很多關於三維圖形繪製的函數,利用這些函數可以很方便的實現三維圖形的繪製
材料/工具
電腦MATLAB
如果不是網格點數據,那麼請用griddata函數插值到網格點數據,然後再surf 如: data=[ 1 1 5.14 1 2 9.56 1 3 8.66 2 1 12.55 2 2 10.51 2 3 2.7 3 1 22.03 3 2 22.97 3 3 32.94 4 2 55.58 4 3 24.55 ]; %第一列爲x,第二列爲y,第三列爲z [xx,yy
方法
首先,開啟MATLAB
三維曲面圖,可以用surf或mesh命令; 三維曲面圖,案例: xx=linspace(-1,1,50); yy=linspace(-2,2,100); [x,y]=meshgrid(xx,yy); z=x.^2+2*y.^2; surf(x,y,z) 結果: 參考:http://zhidao.baidu.com/question/304779250949044964 希望對你有幫
1、點擊“File”2、選擇“New” 3、點擊“Script”
樓主給的表達式和數據範圍是不是有問題? 1、就現在給的表達式來說,i是直接作爲係數乘到z裏面的,曲面無非值大小不同而已,不可能有別的區別。 2、表達式中有23251/x,x不能從0開始。 3、對於比較小的x,23251/x很大,再求e^(23251/x)就很容易
調用surf(得到含有等高線的三維曲面圖)來繪製三維曲面圖,調用格式如下:
看這些點是不是很規矩的網格點的數據。 如果是網格點數據,適當做點重組,就可以用surf函數得到曲面圖。 如果不是網格點數據,那麼請用griddata函數插值到網格點數據,然後再surf 如: data=[ 1 1 5.14 1 2 9.56 1 3 8.66 2 1 12.55 2 2 10.51 2
surf(x,y,z,’PropertyName’,’PropertyValue’...)
“墨西哥帽子”:由函數z=sin(r)/r確定曲面,其中r.^2=x.^2+y.^2 (-ay=[-8:0.5:8]; >>[X,Y]=meshgrid(x,y); >>r=sqrt(X.^2+Y.^2); >>Z=sin(r)./r; >>mesh(X,Y,Z) 或者 >>x=[-8:0.5:8]; >>y=[-8:0.5:8]; >>[X,Y]=meshgrid(-8:0.5:8); >>r=sqrt(X.^2
調用該函數對應m檔案如下:
1 首先,開啟MATLAB 2 1、點擊“File” 2、選擇“New” 3、點擊“Script” 3 調用surf(得到含有等高線的三維曲面圖)來繪製三維曲面圖,調用格式如下:surf(x,y,z,’PropertyName’,’PropertyValue’)調用該函數對應m檔案如下:t=-2:0.1:2;[x,y] =meshg
t=-2:0.1:2;
data=xlsread('檔案名.xlsx'); x=data(:,1); y=data(:,2); z=data(:,3); [X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4'); figure; mesh(X,Y,Z);
[x,y] =meshgrid(t);%%表示區域網格控制,目地是爲了讓x,y形成格點矩陣%%
3組數據就是曲面的x,y,z座標,程序根據要求不同而異,程序可這樣寫: [x,y,z]=meshgrid(linspace(-5,5)); val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (1/9)*y.^2.*z.^3;%isosurface(x,y,z,val,0) p = patch(isosurface(x,y,z,val,0)
z=5*x.^2+8*y^3;
從你描述的問題可知,你的數據表中緯度相當於Y,經度相當於X座標,表中別的值相當於Z座標,這樣可畫出三維圖形。但是,用經緯度座標時,一般是畫地圖的。你沒說清,是用一般的直角座標畫圖呢,還是用地圖的畫法呢?請補充下。
surf(x,y,z);
x=1:10;y=16:25; [X,Y]=meshgrid(x,y); %你可以自己看一下X,Y長什麼樣子,大概就是(X(i,j),Y(i,j))組成了所有(x,y)的組合。 %然後把z算出來,比如z=X.*Y就是說z=z(x,y)=xy mesh(X,Y,z)%或者surf(X,Y,z)或者其他函數,看你想要什麼樣的圖。 參看M
%%設定三維曲面x軸,y軸,z軸,標題對應內容及三個座標軸的取值範圍%%
這個問題已經好幾年了,我也幾年沒在知道答題,看到這個問題又有了答題衝動。。。。 這4行代碼,第一行生成了網格數據,賦值給了X、Y兩個變量。-3:.125:3表示範圍爲-3到3,間隔0.125; 第二行用了一個內置快捷函數peaks(),這個函數的作用是根據
xlabel('X');
方法:將兩組數據運用擬合的方法得到關於第三組數據的迴歸方程,透過迴歸方程和meshgrid擴充數據點。 工具:Matlab2011a 實例: (1)數據列: K/NM/° C/NMS/° At/NM 10 0.1 128 20 0.2 260 30 0.3 393 40 0.4 531 50 0.5 672 60 0.6 815 70 0.7
ylabel('Y');
你的目標函數有點問題,改成 p = @(X) mvnpdf(X,mu_dist1,cov_dist1).*(normcdf(Nf,X(:,1),X(:,2))).^r.* (1-normcdf(Nf,X(:,1),X(:,2))).^(n-r)*factorial(n)/(factorial(r)*factorial(n-r)); 就可以作圖了我得到的圖是這樣的 surf一般接受
zlabel('Z');
知道一系列點的座標如下(1.486,3.059,0.1);(2.121,4.041,0.1);(2.570,3.959,0.1);(3.439,4.396,0.1);(4.505,3.012,0.1);(3.402,1.604,0.1);(2.570,2.065,0.1);(2.150,1.970,0.1);(1.794,3.059,0.2);(2.121,3.615,0.2);(2.5
title('surf三維曲面圖');
編寫mymesh()函數: function mymesh() temdat=load('D:test.txt'); if temdat== -1 ('Error opening the file'); end figure; h=plot3(temdat(:,1),temdat(:,2),temdat(:,3)); set(h,'linestyle','none') hold on; grid on; [x,y]=meshgrid(lin
axis([-2.5 2.5 -2.5 2.5 -5 25]);
這種圖形是要有參數的,並且用三維的函數進行繪製,所以,必須根據自己的參數來進行設定。
點擊這個綠色的按鈕,如圖
您好, 作爲演示,以二元函數圖 z = xexp(-x^2-y^2) 爲例講解基本操作,首先需要利用meshgrid函數生成X-Y平面的網格數據,如下所示: % 生成二維網格數據 xa = -2:0.2:2; ya = xa; [x,y] = meshgrid(xa,ya); 此外,需要計算縱軸數據(z軸),如下
此時,三維曲面就畫好了
X(1) = 29*pi/180:0.5*pi/180:39*pi/180; X(2) = 62*pi/180:0.5*pi/180:75*pi/180; [Y1,Y2] = meshgrid(X(1),X(2)); % 生成畫曲面需要的格點 Z = f(Y1,Y2); % 計算格點對應的函數值,如果還有關於alpha取平均這件事,你是可以寫在函數f內部進行
擴展閱讀,以下內容您可能還感興趣。
MATLAB怎麼畫出一個平面與一個三維曲面的交線,三維曲面是由散點圖畫出來的
從你描述的問題可知,你的數據表中緯度相當於知Y,經度相當於X座標,表中別的值相當於Z座標,這樣可畫出三維圖形。但是道,用經緯度回座標時,一般是畫地圖的。你沒說清,是用一般的直角座標畫圖呢,還是用地圖的畫法呢?請補答充下。追問用地圖的畫法
matlab繪製三維曲面圖的問題
x=1:10;y=16:25;
[X,Y]=meshgrid(x,y);
%你可以自己百看一下X,Y長什麼樣度子,大概就是(X(i,j),Y(i,j))組成了所有問(x,y)的組合。
%然後把z算出來答,比如z=X.*Y就是說z=z(x,y)=xy
mesh(X,Y,z)%或者回surf(X,Y,z)或者其他函數,看你想要什麼樣的圖。
參看MATLAB裏meshgrid、mesh這些函數的答幫助。追問z與x,y的關係也不是某種明確的函數關係,就是一組(x,y)值都對應一個確定的z值,(x,y)的組合有10x10組,所以也有100個z值,我就是想問,除了上面我說的方法,有什麼更簡單的方法能用這100組數畫出曲面圖。
主要是數據我不想那樣幾乎一個個的輸入,想問一下有沒有比較簡單的方法,謝謝追答如果對z(x,y)啥都不知道大概就只能輸入數據了。如果你已經有原式數據,可以考慮讀到MATLAB裏再處理一下(比如reshpae()神馬的)變成X,Y那種樣子。
請教MATLAB繪製三維曲面圖的問題
這個問題已經好幾年了,知我也幾年沒在知道答題,看到這個問題又有了答題衝動。。。。
這4行代碼,第一行生成了網格數據,賦值給了X、Y兩個變量。-3:.125:3表示道範圍爲-3到3,間隔0.125;
第二行用了一內個內置快捷函數peaks(),這個函數的作用是根據輸入的X、Y得到Z的數據,得到有峯有谷這樣的一個圖形。直接執行peaks(50)就能畫出一個圖;
第三行meshc()是一個繪圖函數,比mesh()多了一個等高線。將前面得到的X、Y、Z三個參數傳入就得到了你附的圖;
第四行設定坐容標軸範圍,6個數分別是x軸、y軸、z軸的取值範圍。去掉這行也能畫出圖。
如何使用MATLAB對任意三維數據繪製三維曲面
方法:將兩組數據運用擬合的方法得到關於第三組數據的迴歸方程,透過迴歸方程和meshgrid擴充數據點。
工具:Matlab2011a
實例:
(1)數據列:
K/NM/° C/NMS/° At/NM
10 0.1 128
20 0.2 260
30 0.3 393
40 0.4 531
50 0.5 672
60 0.6 815
70 0.7 954
80.27 0.8 1102
90 0.9 1251
100 1 1406
(2)繪製K_C_At之間的三維曲面
(3)步驟:
1)直接在matlab的command視窗匯入數據
2)編寫m.檔案
源文7a686964616fe78988e69d8331333363376431件如下:
%%************Three Dimensional**************%%
%%輸入數據
%%剛度K,阻尼C與扭簧峯值差Pt間的三維曲面
%x1:輸入剛度K,單位NM/°
%x2:輸入阻尼C,單位NMS/°
%y :扭簧振幅差Pt
%%*******************************************
x1=data(:,1);%c數據列
x2=data(:,2);%k數據列
y=data(:,3);%At數據列
%%********************************************
%將多元分線性迴歸轉化爲線性迴歸方程求解
X=[ones(size(x1)) x1.*x1 x1 x2.*x2 x2 x1.*x2];
[b,bint,r,rint,stats]=regress(y,X,0.05);
b
%三維散點圖分佈
scatter3(x1,x2,y,'filled')
hold on;
%%*********************************************
%數據差值
x1fit=10:1:109;
x2fit=0.1:0.009:1;
%%**********************************************
[xi,yi]=meshgrid(x1fit,x2fit);
%非線性擬合方程
zi=b(1)+b(2)*xi.*xi+b(3)*xi+b(4)*yi.*yi+b(5)*yi+b(6)*xi.*yi;
%繪製三維曲面
meshc(xi,yi,zi);
hold on;
%調整視角
% view(140,30)
%%************************************************
%加註座標
xlabel('stiffness/(NM/°)');ylabel('damping/(NMS/°)');
zlabel('amplitude of aberration with torque/(NM)');
figure(2)
%殘差分析
rcoplot(r,rint);
matlab中怎麼畫不出三維曲面圖
你的目標函數有點問題,改成
p = @(X) mvnpdf(X,mu_dist1,cov_dist1).*(normcdf(Nf,X(:,1),X(:,2))).^r.*...
(1-normcdf(Nf,X(:,1),X(:,2))).^(n-r)*factorial(n)/(factorial(r)*factorial(n-r));
就可以作圖了我得到的圖是這樣的
surf一般接受二維矩陣的輸入,默認矩陣中位置相鄰的點是相互連接的
假如你有X,Y,Z三個對應的大小一致的二維矩陣
(1,1)-(1,2)-......
| |
(2,1)-(2,2)-.......
| |
......................................
surf默認圖中的四點是按照矩陣中的下標位置相連的
x和y數據可以是不等間距的,但是數據必須e799bee5baa6e4b893e5b19e31333335323464是單調遞減或遞增的
那樣才能保證在數組中的位置相鄰的數據所表示的點在空間中也是相連的
而有隨機數產生的x y數組位置是不確定的,
而用surf畫圖的時候,還是按數組位置去連接各個節點,
所以得到的曲面圖是亂七八糟的你可以試試surf(rand(10),rand(10),rand(10))
曲面是慘不忍睹的
要畫這種隨機散點的圖,通常用三角形網格畫分法
首先要根據數據點劃分三角網格,確保每個三個網格是有最近鄰的三個點組成
這樣才能保證畫曲面的時候,近鄰的點能夠被連接在一起
其實用matlab實現三角網格的劃分和畫曲面圖也不麻煩
假如你現在有了隨機產生的數組x和y
他們只需要是nx1的數組就可以了,不需要矩陣
然後利用目標函數p可以得到 z,也是nx1的數組
tri=delaunay(x,y) ; %根據x,y數據劃分三角網格
trisurf(tri,x,y,z); %利用三角網格畫曲面圖
根據你的數據和目標函數,用1000個隨機點
x=rand(1000,1)*2;
ry=rand(1000,1)*0.4;
rz=p([rx ry]);
tri=delaunay(rx,ry) ;
trisurf(tri,rx,ry,rz);
shading interp;
隨機得到圖片