1、plot3三維曲線圖。 啟動MATLAB,新建腳本(.m文件),在腳本編輯區(qū)輸入以下代碼,然后保存運行后,看到三維曲線圖。 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
不論是在科研工作中,還是在實際工程應用中,常常會遇到三維或者更數(shù)據(jù)的處理,并且將處理的數(shù)據(jù)在圖形中顯示出來,MATLAB平臺也提供了很多關于三維圖形繪制的函數(shù),利用這些函數(shù)可以很方便的實現(xiàn)三維圖形的繪制
材料/工具
電腦MATLAB
如果不是網(wǎng)格點數(shù)據(jù),那么請用griddata函數(shù)插值到網(wǎng)格點數(shù)據(jù),然后再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”
樓主給的表達式和數(shù)據(jù)范圍是不是有問題? 1、就現(xiàn)在給的表達式來說,i是直接作為系數(shù)乘到z里面的,曲面無非值大小不同而已,不可能有別的區(qū)別。 2、表達式中有23251/x,x不能從0開始。 3、對于比較小的x,23251/x很大,再求e^(23251/x)就很容易
調(diào)用surf(得到含有等高線的三維曲面圖)來繪制三維曲面圖,調(diào)用格式如下:
看這些點是不是很規(guī)矩的網(wǎng)格點的數(shù)據(jù)。 如果是網(wǎng)格點數(shù)據(jù),適當做點重組,就可以用surf函數(shù)得到曲面圖。 如果不是網(wǎng)格點數(shù)據(jù),那么請用griddata函數(shù)插值到網(wǎng)格點數(shù)據(jù),然后再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’...)
“墨西哥帽子”:由函數(shù)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
調(diào)用該函數(shù)對應m文件如下:
1 首先,打開MATLAB 2 1、點擊“File” 2、選擇“New” 3、點擊“Script” 3 調(diào)用surf(得到含有等高線的三維曲面圖)來繪制三維曲面圖,調(diào)用格式如下:surf(x,y,z,’PropertyName’,’PropertyValue’)調(diào)用該函數(shù)對應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);%%表示區(qū)域網(wǎng)格控制,目地是為了讓x,y形成格點矩陣%%
3組數(shù)據(jù)就是曲面的x,y,z坐標,程序根據(jù)要求不同而異,程序可這樣寫: [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;
從你描述的問題可知,你的數(shù)據(jù)表中緯度相當于Y,經(jīng)度相當于X坐標,表中別的值相當于Z坐標,這樣可畫出三維圖形。但是,用經(jīng)緯度坐標時,一般是畫地圖的。你沒說清,是用一般的直角坐標畫圖呢,還是用地圖的畫法呢?請補充下。
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)或者其他函數(shù),看你想要什么樣的圖。 參看M
%%設置三維曲面x軸,y軸,z軸,標題對應內(nèi)容及三個坐標軸的取值范圍%%
這個問題已經(jīng)好幾年了,我也幾年沒在知道答題,看到這個問題又有了答題沖動。。。。 這4行代碼,第一行生成了網(wǎng)格數(shù)據(jù),賦值給了X、Y兩個變量。-3:.125:3表示范圍為-3到3,間隔0.125; 第二行用了一個內(nèi)置快捷函數(shù)peaks(),這個函數(shù)的作用是根據(jù)
xlabel('X');
方法:將兩組數(shù)據(jù)運用擬合的方法得到關于第三組數(shù)據(jù)的回歸方程,通過回歸方程和meshgrid擴充數(shù)據(jù)點。 工具:Matlab2011a 實例: (1)數(shù)據(jù)列: 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');
你的目標函數(shù)有點問題,改成 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()函數(shù): 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]);
這種圖形是要有參數(shù)的,并且用三維的函數(shù)進行繪制,所以,必須根據(jù)自己的參數(shù)來進行設置。
點擊這個綠色的按鈕,如圖
您好, 作為演示,以二元函數(shù)圖 z = xexp(-x^2-y^2) 為例講解基本操作,首先需要利用meshgrid函數(shù)生成X-Y平面的網(wǎng)格數(shù)據(jù),如下所示: % 生成二維網(wǎng)格數(shù)據(jù) xa = -2:0.2:2; ya = xa; [x,y] = meshgrid(xa,ya); 此外,需要計算縱軸數(shù)據(jù)(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); % 計算格點對應的函數(shù)值,如果還有關于alpha取平均這件事,你是可以寫在函數(shù)f內(nèi)部進行
擴展閱讀,以下內(nèi)容您可能還感興趣。
MATLAB怎么畫出一個平面與一個三維曲面的交線,三維曲面是由散點圖畫出來的
從你描述的問題可知,你的數(shù)據(jù)表中緯度相當于知Y,經(jīng)度相當于X坐標,表中別的值相當于Z坐標,這樣可畫出三維圖形。但是道,用經(jīng)緯度回坐標時,一般是畫地圖的。你沒說清,是用一般的直角坐標畫圖呢,還是用地圖的畫法呢?請補答充下。追問用地圖的畫法
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)或者其他函數(shù),看你想要什么樣的圖。
參看MATLAB里meshgrid、mesh這些函數(shù)的答幫助。追問z與x,y的關系也不是某種明確的函數(shù)關系,就是一組(x,y)值都對應一個確定的z值,(x,y)的組合有10x10組,所以也有100個z值,我就是想問,除了上面我說的方法,有什么更簡單的方法能用這100組數(shù)畫出曲面圖。
主要是數(shù)據(jù)我不想那樣幾乎一個個的輸入,想問一下有沒有比較簡單的方法,謝謝追答如果對z(x,y)啥都不知道大概就只能輸入數(shù)據(jù)了。如果你已經(jīng)有原式數(shù)據(jù),可以考慮讀到MATLAB里再處理一下(比如reshpae()神馬的)變成X,Y那種樣子。
請教MATLAB繪制三維曲面圖的問題
這個問題已經(jīng)好幾年了,知我也幾年沒在知道答題,看到這個問題又有了答題沖動。。。。
這4行代碼,第一行生成了網(wǎng)格數(shù)據(jù),賦值給了X、Y兩個變量。-3:.125:3表示道范圍為-3到3,間隔0.125;
第二行用了一內(nèi)個內(nèi)置快捷函數(shù)peaks(),這個函數(shù)的作用是根據(jù)輸入的X、Y得到Z的數(shù)據(jù),得到有峰有谷這樣的一個圖形。直接運行peaks(50)就能畫出一個圖;
第三行meshc()是一個繪圖函數(shù),比mesh()多了一個等高線。將前面得到的X、Y、Z三個參數(shù)傳入就得到了你附的圖;
第四行設置坐容標軸范圍,6個數(shù)分別是x軸、y軸、z軸的取值范圍。去掉這行也能畫出圖。
如何使用MATLAB對任意三維數(shù)據(jù)繪制三維曲面
方法:將兩組數(shù)據(jù)運用擬合的方法得到關于第三組數(shù)據(jù)的回歸方程,通過回歸方程和meshgrid擴充數(shù)據(jù)點。
工具:Matlab2011a
實例:
(1)數(shù)據(jù)列:
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窗口導入數(shù)據(jù)
2)編寫m.文件
源文7a686964616fe78988e69d8331333363376431件如下:
%%************Three Dimensional**************%%
%%輸入數(shù)據(jù)
%%剛度K,阻尼C與扭簧峰值差Pt間的三維曲面
%x1:輸入剛度K,單位NM/°
%x2:輸入阻尼C,單位NMS/°
%y :扭簧振幅差Pt
%%*******************************************
x1=data(:,1);%c數(shù)據(jù)列
x2=data(:,2);%k數(shù)據(jù)列
y=data(:,3);%At數(shù)據(jù)列
%%********************************************
%將多元分線性回歸轉化為線性回歸方程求解
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;
%%*********************************************
%數(shù)據(jù)差值
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;
%調(diào)整視角
% view(140,30)
%%************************************************
%加注坐標
xlabel('stiffness/(NM/°)');ylabel('damping/(NMS/°)');
zlabel('amplitude of aberration with torque/(NM)');
figure(2)
%殘差分析
rcoplot(r,rint);
matlab中怎么畫不出三維曲面圖
你的目標函數(shù)有點問題,改成
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數(shù)據(jù)可以是不等間距的,但是數(shù)據(jù)必須e799bee5baa6e4b893e5b19e31333335323464是單調(diào)遞減或遞增的
那樣才能保證在數(shù)組中的位置相鄰的數(shù)據(jù)所表示的點在空間中也是相連的
而有隨機數(shù)產(chǎn)生的x y數(shù)組位置是不確定的,
而用surf畫圖的時候,還是按數(shù)組位置去連接各個節(jié)點,
所以得到的曲面圖是亂七八糟的你可以試試surf(rand(10),rand(10),rand(10))
曲面是慘不忍睹的
要畫這種隨機散點的圖,通常用三角形網(wǎng)格畫分法
首先要根據(jù)數(shù)據(jù)點劃分三角網(wǎng)格,確保每個三個網(wǎng)格是有最近鄰的三個點組成
這樣才能保證畫曲面的時候,近鄰的點能夠被連接在一起
其實用matlab實現(xiàn)三角網(wǎng)格的劃分和畫曲面圖也不麻煩
假如你現(xiàn)在有了隨機產(chǎn)生的數(shù)組x和y
他們只需要是nx1的數(shù)組就可以了,不需要矩陣
然后利用目標函數(shù)p可以得到 z,也是nx1的數(shù)組
tri=delaunay(x,y) ; %根據(jù)x,y數(shù)據(jù)劃分三角網(wǎng)格
trisurf(tri,x,y,z); %利用三角網(wǎng)格畫曲面圖
根據(jù)你的數(shù)據(jù)和目標函數(shù),用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;
隨機得到圖片
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com