Matlab期末作業(yè)-李家興20131336013_第1頁(yè)
Matlab期末作業(yè)-李家興20131336013_第2頁(yè)
Matlab期末作業(yè)-李家興20131336013_第3頁(yè)
Matlab期末作業(yè)-李家興20131336013_第4頁(yè)
Matlab期末作業(yè)-李家興20131336013_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Matlab基礎(chǔ)及應(yīng)用教程期末作業(yè)學(xué)號(hào)20131336013姓名李家興一、M文件及注釋用Matlab繪制管狀幾何體利用MATLAB繪制管狀幾何體,所謂管狀幾何體就是中空的像水管一樣的幾何體。MATLAB函數(shù)TubeLike,可以根據(jù)管道中心線坐標(biāo)及各點(diǎn)處管道半徑繪制管狀幾何體。程序M文件function[X,Y,Z]=TubeLike(x,y,z,r)%繪制三維管道型立體%TubeLike(x,y,z)繪制三維管道型幾何體,輸入?yún)?shù)x,y,z分別為管道中心線各點(diǎn)處%的坐標(biāo),x,y和z應(yīng)為等長(zhǎng)的向量,此時(shí)管道具有統(tǒng)一的半徑1.%%TubeLike(x,y,z,r)輸入?yún)?shù)r用來(lái)指定管道半徑。r可以是標(biāo)量,也可以是與x,y,z等%長(zhǎng)的向量。當(dāng)r是標(biāo)量時(shí),管道具有統(tǒng)一半徑;當(dāng)r是向量時(shí),管道%各截面處可以有不同的半徑。%%TubeLike(x)輸入?yún)?shù)x為3行或3列的矩陣,用來(lái)指定管道中心線各點(diǎn)處的坐標(biāo),%此時(shí)管道具有統(tǒng)一的半徑1.%%TubeLike(x,r)輸入?yún)?shù)x為3行或3列的矩陣,用來(lái)指定管道中心線各點(diǎn)處的坐標(biāo),%輸入?yún)?shù)r(標(biāo)量或向量)用來(lái)指定管道半徑。%%[X,Y,Z]=TubeLike(...)輸出三維管道型幾何體的網(wǎng)格數(shù)據(jù)X,Y和Z.%%Example:%t=linspace(0,2*pi,50);%x=sin(t);%y=cos(t);%z=cos(t/2);%r=sin(t);%TubeLike(x,y,z,r)ifnargin>=1&&nargin<=2%檢查數(shù)據(jù)維數(shù)是否正確[m,n]=size(x);p=min(m,n);%維數(shù)ifp~=3error('應(yīng)輸入三維樣本數(shù)據(jù),并且樣本容量應(yīng)大于3');end%把樣本觀測(cè)值矩陣轉(zhuǎn)置,使得行對(duì)應(yīng)變量,列對(duì)應(yīng)觀測(cè)ifm>=nx=x';endyd=x(2,:);zd=x(3,:);xd=x(1,:);ifnargin==1r=ones(size(xd));elseifisvector(y)ifnumel(y)==1r=y*ones(size(xd));elseifnumel(y)>1&&numel(y)==length(xd)r=y(:)';elseerror('半徑應(yīng)為標(biāo)量或與x等長(zhǎng)的向量');endelseerror('半徑應(yīng)為標(biāo)量或與x等長(zhǎng)的向量');endendelseifnargin>=3&&nargin<=4ifisvector(x)&&isvector(y)&&isvector(z)numxyz=[numel(x),numel(y),numel(z)];ifany(numxyz-min(numxyz))error('管道中心坐標(biāo)x,y,z應(yīng)為等長(zhǎng)的向量');elsexd=x(:)';yd=y(:)';zd=z(:)';endelseerror('管道中心坐標(biāo)x,y,z應(yīng)為等長(zhǎng)的向量');endifnargin==3r=ones(size(xd));elseifisvector(r)ifnumel(r)==1r=r*ones(size(xd));elseifnumel(r)>1&&numel(r)==length(xd)r=r(:)';elseerror('半徑應(yīng)為標(biāo)量或與x等長(zhǎng)的向量');endelseerror('半徑應(yīng)為標(biāo)量或與x等長(zhǎng)的向量');endendelseerror('至少需要1個(gè)輸入?yún)?shù),至多需要4個(gè)輸入?yún)?shù)');endt=linspace(0,2*pi,30)';%角度向量%x的一階差分dx=diff(xd);dx=[dx(end)dx];%y的一階差分dy=diff(yd);dy=[dy(end)dy];%z的一階差分dz=diff(zd);dz=[dz(end)dz];%計(jì)算法線與y軸正向夾角余弦,法線與y軸正向夾角正弦負(fù)值den1=sqrt(dx.^2+dy.^2);cy=dy./den1;cy(den1==0)=1;sy=-dx./den1;sy(den1==0)=0;%計(jì)算法線與z軸正向夾角余弦,法線與z軸正向夾角正弦負(fù)值den2=sqrt(dx.^2+dy.^2+dz.^2);cz=dz./den2;cz(den2==0)=1;sz=-sqrt(dx.^2+dy.^2)./den2;sz(den2==0)=0;OneMat=ones(numel(t),1);%1向量%管道中心線坐標(biāo)矩陣Xcenter=OneMat*xd;Ycenter=OneMat*yd;Zcenter=OneMat*zd;%單位圓坐標(biāo)數(shù)據(jù)x0=cos(t);y0=sin(t);%計(jì)算三維管道型幾何體的網(wǎng)格數(shù)據(jù)X,Y和ZXgrid=Xcenter+x0*(r.*cy)-y0*(r.*cz.*sy);Ygrid=Ycenter+x0*(r.*sy)+y0*(r.*cz.*cy);Zgrid=Zcenter+y0*(r.*sz);%輸出圖形或網(wǎng)格數(shù)據(jù)ifnargout==0surf(Xgrid,Ygrid,Zgrid);%繪制三維曲面圖形elseX=Xgrid;Y=Ygrid;Z=Zgrid;EndM文件見附件二、程序運(yùn)行實(shí)例1、繪制扭結(jié)%Example1:扭結(jié)n=100;r=0.75;q=floor(n/3);%向下舍入t=(0:n)/n;a=2;b=3;c=1.5;q1=2;q2=4;f0=sin(q1*pi*t)+a*sin(q2*pi*t)-...b*cos(4*pi*t)/2+c*sin(6*pi*t);f0=[f0(1:n)f0(1:n)];x=f0(1:n+1);%管道中心線x點(diǎn)y=f0(q+1:q+n+1);%管道中心線y點(diǎn)z=f0(2*q+1:2*q+n+1);%管道中心線z點(diǎn)figure(1)%繪制圖形TubeLike(x,y,z,r)%調(diào)用TubeLike程序shadinginterp;%進(jìn)行彩色的插值處理,是彩色平滑過度light%照明模式lightinggouraud%光源模式點(diǎn)模式光照單元為圖形的像素點(diǎn)view(2)%調(diào)整3d圖形顯示的角度axisequaloff%坐標(biāo)軸長(zhǎng)度相等關(guān)閉axisvis3d%凍結(jié)屏幕高寬比2、繪制立體太極圖%Example2:太極t=linspace(pi,0,50);%從0到π分50個(gè)點(diǎn)x0=cos(t);%單位圓x0坐標(biāo)y0=sin(t);%單位圓y0坐標(biāo)x=[x0-1x0+1fliplr(2*x0)2*x0];%管道中心線x點(diǎn)y=[y0-y0fliplr(2*y0)-2*y0];%管道中心線y點(diǎn)z=zeros(size(x));%管道中心線z點(diǎn)figure(2)%繪制圖形[X,Y,Z]=TubeLike(x,y,z,0.2);%輸出三維管道型幾何體的網(wǎng)格數(shù)據(jù)X,Y和Zsurf(X,Y,Z,'FaceColor',[100],'LineStyle','none');%繪制三維曲面圖形[X,Y,Z]=sphere;%繪制單位球體holdon%開啟圖形保持surf(0.2*X-1,0.2*Y,0.2*Z,'FaceColor',[010],'LineStyle','none');%繪制三維曲面surf(0.2*X+1,0.2*Y,0.2*Z,'FaceColor',[001],'LineStyle','none');%繪制三維曲面holdoff%取消原來(lái)的圖view(3)%調(diào)整3d圖形顯示的角度axisequaloff%坐標(biāo)軸長(zhǎng)度相等關(guān)閉light%設(shè)置光源3、繪制田螺%Example3:田螺t=linspace(0,7*pi,200);%0到7π分200個(gè)點(diǎn)x=t.*cos(t)*0.1;%管道中心線x點(diǎn)y=t.*sin(t)*0.1;%管道中心線y點(diǎn)z=[1:numel(t)]*0.01;%管道中心線z點(diǎn)r=sqrt([0:numel(t)-1]*0.004);%管道半徑rfigure(3)%畫圖TubeLike(x,y,z,r)%調(diào)用TubeLike函數(shù)view(-44,-52)%調(diào)整3d圖形顯示的角度角度-44,仰視角-52axisequaloff%坐標(biāo)軸長(zhǎng)度相等關(guān)閉代碼運(yùn)行繪制三維管道型立體TubeLike(x,y,z)繪制三維管道型幾何體,輸入?yún)?shù)x,y,z分別為管道中心線各點(diǎn)處的坐標(biāo),x,y和z應(yīng)為等長(zhǎng)的向量,此時(shí)管道具有統(tǒng)一的半徑1.TubeLike(x,y,z,r)輸入?yún)?shù)r用來(lái)指定管道半徑。r可以是標(biāo)量,也可以是與x,y,z等長(zhǎng)的向量。當(dāng)r是標(biāo)量時(shí),管道具有統(tǒng)一半徑;當(dāng)r是向量時(shí),管道各截面處可以有不同的半徑。TubeLike(x)輸入?yún)?shù)x為3行或3列的矩陣,用來(lái)指定管道中心線各點(diǎn)處的坐標(biāo),此時(shí)管道具有統(tǒng)一的半徑1.TubeLike(x,r)輸入?yún)?shù)x為3行或3列的矩陣,用來(lái)指定管道中心線各點(diǎn)處的坐標(biāo),輸入?yún)?shù)r(標(biāo)量或向量)用來(lái)指定管道半徑。[X,Y,Z]=TubeLike(...)輸出三維管道型幾何體的網(wǎng)格數(shù)據(jù)X,Y和Z.三、主要設(shè)計(jì)內(nèi)容1檢查數(shù)據(jù)維數(shù)是否正確2把樣本觀測(cè)值矩陣轉(zhuǎn)置,使得行對(duì)應(yīng)變量,列對(duì)應(yīng)觀測(cè)3計(jì)算角度向量4計(jì)算x的一階差分5計(jì)算y的一階差分6計(jì)算z的一階差分7計(jì)算法線與y軸正向夾角余弦,法線與y軸正向夾角正弦負(fù)值8計(jì)算法線與z軸正向夾角余弦,法線與z軸正向夾角正弦負(fù)值9管道中心線坐標(biāo)矩陣10單位圓坐標(biāo)數(shù)據(jù)11計(jì)算三維管道型幾何體的網(wǎng)格數(shù)據(jù)X,Y和Z12輸出圖形或網(wǎng)格數(shù)據(jù)四、主要函數(shù)信息Isvector函數(shù)isvector(X)是判斷是否矢量(包括常量)。是的話返回true即邏輯值1,非即返回false即邏輯值0所以你這句是x非矢量時(shí)為真并執(zhí)行if后語(yǔ)句其實(shí)可以簡(jiǎn)化為if(~isvector(x))

Nargin函數(shù)nargin是用來(lái)判斷輸入變量個(gè)數(shù)的函數(shù),這樣就可以針對(duì)不同的情況執(zhí)行不同的功能。通??梢杂盟麃?lái)設(shè)定一些默認(rèn)值。例子,函數(shù)test1的功能是輸出a和b的和。如果只輸入一個(gè)變量,則認(rèn)為另一個(gè)變量為0,如果兩個(gè)變量都沒有輸入,則默認(rèn)兩者均為0。functiony=test1(a,b)ifnargin==0a=0;b=0;elseifnargin==1b=0;endy=a+b;Size函數(shù)size():獲取矩陣的行數(shù)和列數(shù)(1)s=size(A),當(dāng)只有一個(gè)輸出參數(shù)時(shí),返回一個(gè)行向量,該行向量的第一個(gè)元素時(shí)矩陣的行數(shù),第二個(gè)元素是矩陣的列數(shù)。

(2)[r,c]=size(A),

當(dāng)有兩個(gè)輸出參數(shù)時(shí),size函數(shù)將矩陣的行數(shù)返回到第一個(gè)輸出變量r,將矩陣的列數(shù)返回到第二個(gè)輸出變量c。(3)size(A,n)如果在size函數(shù)的輸入?yún)?shù)中再添加一項(xiàng)n,并用1或2為n賦值,則size將返回矩陣的行數(shù)或列數(shù)。其中r=size(A,1)該語(yǔ)句返回的時(shí)矩陣A的行數(shù),c=size(A,2)該語(yǔ)句返回的時(shí)矩陣A的列數(shù)。另外,length()=max(size()).Validateattributes函數(shù)函數(shù)validateattributes,檢查序列的大小size形狀shape。ParseInputs函數(shù)一般是內(nèi)建函數(shù)的參數(shù)處理過程。等號(hào)左邊中括號(hào)的內(nèi)容是ParseInputs函數(shù)的多個(gè)輸出,這也是matlab的一個(gè)特點(diǎn):函數(shù)可以同時(shí)輸出多個(gè)變量。

這個(gè)ParseInputs在很多matlab內(nèi)部函數(shù)中都有。主要用于從用戶調(diào)用函數(shù)的輸入變量中獲得并“整理”出函數(shù)所需要的東西,例如,根據(jù)輸入變量的個(gè)數(shù)、類型不同,函數(shù)的處理方式可能也有變化Figure函數(shù)Figure控制制圖窗口Diff函數(shù)diff函數(shù)用以演算一函數(shù)的微分項(xiàng),相關(guān)的函數(shù)語(yǔ)法有下列4個(gè):diff(f)傳回f對(duì)預(yù)設(shè)獨(dú)立變數(shù)的一次微分值diff(f,'t')傳回f對(duì)獨(dú)立變數(shù)t的一次微分值diff(f,n)傳回f對(duì)預(yù)設(shè)獨(dú)立變數(shù)的n次微分值diff(f,'t',n)傳回f對(duì)獨(dú)立變數(shù)t的n次微分值也即matlab求導(dǎo)命令diff調(diào)用格式:diff(函數(shù)),求的一階導(dǎo)數(shù);diff(函數(shù),n),求的n階導(dǎo)數(shù)(n是具體整數(shù));diff(函數(shù),變量名),求對(duì)的偏導(dǎo)數(shù);diff(函數(shù),變量名,n),求對(duì)的n階偏導(dǎo)數(shù);Linspace函數(shù)linspace(x1,x2,n)

linspace是Matlab中的一個(gè)指令,用于產(chǎn)生x1,x2之間的N點(diǎn)行矢量。其中x1、x2、N分別為起始值、中止值、元素個(gè)數(shù)。若缺省N,默認(rèn)點(diǎn)數(shù)為100。linspace(x0,x1,n)

其中n代表的是點(diǎn)的數(shù)目,即分成n-1等分。

步長(zhǎng)應(yīng)當(dāng)是(x1-x0)/(n-1)Repmat函數(shù)repmat即ReplicateMatrix,復(fù)制和平鋪矩陣,是MATLAB里面的一個(gè)函數(shù)。一、repmat(NaN,m,n)等價(jià)于NaN(m,n).二、repmat(single,inf,m,n)等價(jià)于inf(m,n,'single').三、repmat(int8(0),m,n)等價(jià)于zeros(m,n,'int8').四、repmat(uint32(1),m,n)等價(jià)于ones(m,n,'uint32').五、repmat(eps,m,n)等價(jià)于eps(ones(m,n)).Mat2gray函數(shù)mat2gray實(shí)現(xiàn)圖像矩陣的歸一化操作。所謂"歸一化"就是使矩陣的每個(gè)元素的值都在0和1之間。該函數(shù)在數(shù)字圖像處理中經(jīng)常用到。I=mat2gray(A,[aminamax])將圖像矩陣A中介于amin和amax的數(shù)據(jù)歸一化處理,其余小于amin的元素都變?yōu)?,大于amax的元素都變?yōu)?。I=mat2gray(A)將圖像矩陣A歸一化為圖像矩陣I,歸一化后矩陣中每個(gè)元素的值都在0到1范圍內(nèi)(包括0和1)。其中0表示黑色,1表示白色。Shading函數(shù)shading是用來(lái)處理色彩效果的,分以下三種:

noshading一般的默認(rèn)模式即shadingfaceted

shadingflat在faceted的基礎(chǔ)上去掉圖上的網(wǎng)格線

shadinginterp在flat的基礎(chǔ)上進(jìn)行色彩的插值處理,使色彩平滑過渡View函數(shù)view是用來(lái)調(diào)整3d圖形顯示的角度的view(a,b)a是角度,b是仰視角Light函數(shù)light('Co

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論