數(shù)學(xué)建模 MATLAB入門
《數(shù)學(xué)建模 MATLAB入門》由會員分享,可在線閱讀,更多相關(guān)《數(shù)學(xué)建模 MATLAB入門(59頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、數(shù) 學(xué) 建 模 MATLAB入 門 MATLAB概 況 MATLAB是 矩 陣 實(shí) 驗(yàn) 室 ( Matrix Laboratory) 之 意 。除 具 備 卓 越 的 數(shù) 值 計 算 能 力 外 , 它 還 提 供 了 專 業(yè) 水 平 的 符號 計 算 , 文 字 處 理 , 可 視 化 建 模 仿 真 和 實(shí) 時 控 制 等 功 能 。 MATLAB的 基 本 數(shù) 據(jù) 單 位 是 矩 陣 , 它 的 指 令 表 達(dá) 式與 數(shù) 學(xué) ,工 程 中 常 用 的 形 式 十 分 相 似 ,故 用 MATLAB來 解 算法 問 題 要 比 用 C,FORTRAN等 語 言 完 相 同 的 事 情 簡
2、捷 得 多 . 當(dāng) 前 流 行 的 MATLAB 7/Simulink 包 括 擁 有 數(shù) 百 個 內(nèi) 部函 數(shù) 的 主 包 和 三 十 幾 種 工 具 箱 (Toolbox).工 具 箱 又 可 以 分為 功 能 性 工 具 箱 和 學(xué) 科 工 具 箱 .功 能 工 具 包 用 來 擴(kuò) 充MATLAB的 符 號 計 算 ,可 視 化 建 模 仿 真 ,文 字 處 理 及 實(shí) 時 控制 等 功 能 .學(xué) 科 工 具 箱 是 專 業(yè) 性 比 較 強(qiáng) 的 工 具 箱 ,控 制 工 具包 ,信 號 處 理 工 具 包 ,通 信 工 具 包 等 都 屬 于 此 類 . 開 放 性 使 MATLAB廣
3、受 用 戶 歡 迎 .除 內(nèi) 部 函 數(shù) 外 ,所 有MATLAB主 箱 文 件 和 各 種 工 具 箱 都 是 可 讀 可 修 改 的 文 件 ,用 戶 通 過 對 源 程 序 的 修 改 或 加 入 自 己 編 寫 程 序 構(gòu) 造 新 的 專用 工 具 箱 . MATLAB的 語 言 特 點(diǎn) 1) 語 言 簡 潔 緊 湊 , 使 用 方 便 靈 活 , 庫 函 數(shù) 極 其 豐 富 。 2) 運(yùn) 算 符 豐 富 。 由 于 MATLAB是 用 C語 言 編 寫 的 , MATLAB提 供 了 和 C語 言 幾 乎 一 樣 多 的 運(yùn) 算 符 , 靈 活 使 用 MATLAB的 運(yùn) 算 符將
4、使 程 序 變 得 極 為 簡 短 。 3) MATLAB既 具 有 結(jié) 構(gòu) 化 的 控 制 語 句 ( 如 for循 環(huán) , while循環(huán) , break語 句 和 if語 句 ) , 又 有 面 向 對 象 編 程 的 特 性 。 4) 程 序 限 制 不 嚴(yán) 格 , 程 序 設(shè) 計 自 由 度 大 。 例 如 , 在 MATLAB里 , 用 戶 無 需 對 矩 陣 預(yù) 定 義 就 可 使 用 。 5) 程 序 的 可 移 植 性 很 好 , 基 本 上 不 做 修 改 就 可 以 在 各 種 型 號的 計 算 機(jī) 和 操 作 系 統(tǒng) 上 運(yùn) 行 。 6) MATLAB的 圖 形 功 能
5、 強(qiáng) 大 。 在 FORTRAN和 C語 言 里 , 繪 圖 都很 不 容 易 , 但 在 MATLAB里 , 數(shù) 據(jù) 的 可 視 化 非 常 簡 單 。 MATLAB 還 具 有 較 強(qiáng) 的 編 輯 圖 形 界 面 的 能 力 。7) MATLAB的 缺 點(diǎn) 是 , 它 和 其 他 高 級 程 序 相 比 , 程 序 的 執(zhí) 行 速 度 較 慢 。 由 于 MATLAB的 程 序 不 用 編 譯 等 預(yù) 處 理 , 也 不 生 成可 執(zhí) 行 文 件 , 程 序 為 解 釋 執(zhí) 行 , 所 以 速 度 較 慢 。 x1+ 2x2 3x3= 8 3x1 - 4x2 + 2x3=-7 5x1+ 2
6、x2 10 x3=19 x1=1; x2=2; x3=-1;引 例 1: 求 解 線 性 方 程 組 解 編 寫 M文 件 xxgh1.m如 下 :c=-0.4 -0.28 -0.32 -0.72 -0.64 -0.6; A=0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08; b=850;700;100;900; Aeq=; beq=; vlb=0;0;0;0;0;0; vub=;x,fval=linprog(c,A,b,Aeq,beq,vlb,vub)引 例 2: 求 解 線
7、 性 規(guī) 劃 m=1 2 3 4 ; 5 6 7 8; 9 10 11 12 p=1 1 1 1 2 2 2 2 3 3 3 3說 明 :逗 號 或 空 格 用 于 分 隔 某 一 行 的 元 素 ;分 號 用 于 區(qū) 分 不 同 的 行 ; 輸 入 矩 陣 時 , 嚴(yán) 格 要 求 所 有 行 有 相 同 的 列 ; MATLAB(shuzu1)x=a b c d e f 創(chuàng) 建 包 含 指 定 元 素 的 行 向 量x=first: last 創(chuàng) 建 從 first開 始 , 加 1計 數(shù) , 到 last結(jié) 束 的 行 向 量x=first: increment: last 創(chuàng) 建 從 f
8、irst開 始 , 加 increment計 數(shù) , last結(jié) 束 的行 向 量x=linspace(first, last, n) 創(chuàng) 建 從 first開 始 , 到 last結(jié) 束 , 有 n個 元 素 的 行 向 量 特 殊 矩 陣 的 建 立 : . MATLAB(matrix1)d=eye(m, n) 產(chǎn) 生 一 個 m行 、 n列 的 單 位 矩 陣c=ones(m, n) 產(chǎn) 生 一 個 m行 、 n列 的 元 素 全 為 1的 矩 陣b=zeros(m, n) 產(chǎn) 生 一 個 m行 、 n列 的 零 矩 陣a= 產(chǎn) 生 一 個 空 矩 陣 , 當(dāng) 對 一 項(xiàng) 操 作 無 結(jié)
9、 果 時 , 返 回 空 矩 陣 , 空 矩 陣 的 大 小 為 零 . MATLAB(shuzu2)( 3) 直 接 使 用 元 素 編 址 序 號 . x(a b c d) 表 示 提 取數(shù) 組 x的 第 a、 b、 c、 d個 元 素 構(gòu) 成 一 個 新 的 數(shù) 組x(a) x(b) x(c) x(d). ( 2) 訪 問 一 塊 元 素 : A(m,: )表 示 二 維 數(shù) 組 第 m行 元 素 , A(: ,n) 表 示 二 維 數(shù) 組 第 n列 元 素 , ( 1) 訪 問 一 個 元 素 : x(i)表 示 訪 問 數(shù) 組 x的 第 i個 元 素 . 矩 陣 中 元 素 的 操
10、作 MATLAB (matrix2)( 1) 矩 陣 A的 第 r行 : A( r, : )( 2) 矩 陣 A的 第 r列 : A( : , r)( 4) 取 矩 陣 A的 第 i1i2行 、 第 j1j2列 構(gòu) 成 新 矩 陣 :A(i1:i2, j1:j2)( 5) 以 逆 序 提 取 矩 陣 A的 第 i1i2行 , 構(gòu) 成 新 矩 陣 :A(i2:-1: i1, : )( 6) 以 逆 序 提 取 矩 陣 A的 第 j1j2列 , 構(gòu) 成 新 矩 陣 :A(:, j2:-1: j1 )( 7) 刪 除 A的 第 i1i2行 , 構(gòu) 成 新 矩 陣 :A(i1:i2, : )= ( 8
11、) 刪 除 A的 第 j1j2列 , 構(gòu) 成 新 矩 陣 :A(: , j1:j2)= ( 9) 將 矩 陣 A和 B拼 接 成 新 矩 陣 : A B; A; B( 3) 依 次 提 取 矩 陣 A的 每 一 列 , 將 A拉 伸 為 一 個 列 向 量 : A( : ) 數(shù) 組 的 方 向 前 面 例 子 中 的 數(shù) 組 都 是 一 行 數(shù) 列 , 是 行 方 向 分 布 的 . 稱 之 為 行 向 量 . 數(shù) 組 也 可 以 是 列 向 量 , 它 的 數(shù) 組 操 作 和 運(yùn)算 與 行 向 量 是 一 樣 的 , 唯 一 的 區(qū) 別 是 結(jié) 果 以 列 形 式 顯 示 . 產(chǎn) 生 列 向
12、 量 有 兩 種 方 法 : 直 接 產(chǎn) 生 例 c=1; 2; 3; 4 轉(zhuǎn) 置 產(chǎn) 生 例 b=1 2 3 4; c=b 說 明 : 以 空 格 或 逗 號 分 隔 的 元 素 指 定 的 是 不 同 列 的元 素 , 而 以 分 號 分 隔 的 元 素 指 定 了 不 同 行 的 元 素 . ( 1) 標(biāo) 量 -數(shù) 組 運(yùn) 算 數(shù) 組 對 標(biāo) 量 的 加 、 減 、 乘 、 除 、 乘 方 是 數(shù) 組 的 每 個元 素 對 該 標(biāo) 量 施 加 相 應(yīng) 的 加 、 減 、 乘 、 除 、 乘 方 運(yùn) 算 . 設(shè) : a=a1,a2,an, c=標(biāo) 量則 : a+c=a1+c,a2+c,an
13、+c a.*c=a1*c,a2*c,an*c a./c= a1/c,a2/c,an/c(右 除 ) a.c= c/a 1,c/a2,c/an (左 除 ) a.c= a1c,a2c,anc c.a= ca1,ca2,can MATLAB(shuzu3) ( 2) 數(shù) 組 -數(shù) 組 運(yùn) 算 當(dāng) 兩 個 數(shù) 組 有 相 同 維 數(shù) 時 , 加 、 減 、 乘 、 除 、冪 運(yùn) 算 可 按 元 素 對 元 素 方 式 進(jìn) 行 的 , 不 同 大 小 或 維數(shù) 的 數(shù) 組 是 不 能 進(jìn) 行 運(yùn) 算 的 . 設(shè) : a=a1,a2,an, b=b1,b2,bn則 : a+b= a1+b1,a2+b2,
14、an+bn a.*b= a1*b1,a2*b2,an*bn a./b= a1/b1,a2/b2,an/bn a.b=b 1/a1,b2/a2,bn/an a.b=a1b1,a2b2,anbn MATLAB(shuzu4) 返 回 ( 2) 矩 陣 -矩 陣 運(yùn) 算 1 元 素 對 元 素 的 運(yùn) 算 , 同 數(shù) 組 -數(shù) 組 運(yùn) 算 。 ( 1) 標(biāo) 量 -矩 陣 運(yùn) 算 同 標(biāo) 量 -數(shù) 組 運(yùn) 算 。 MATLAB(matrix3) 2矩 陣 運(yùn) 算 :矩 陣 加 法 : A+B矩 陣 乘 法 : A*B方 陣 的 行 列 式 : det( A)方 陣 的 逆 : inv( A)方 陣 的
15、 特 征 值 與 特 征 向 量 : V, D=eigA 返 回 矩 陣 和 數(shù) 組 相 關(guān) 函 數(shù) 在 MATLAB中 , 字 符 串 是 用 單 撇 號 括 起 來 的 字 符 序 列 。MATLAB將 字 符 串 當(dāng) 作 一 個 行 向 量 , 每個 元 素 對 應(yīng) 一 個 字 符 , 其 標(biāo) 識 方 法 和 數(shù)值 向 量 相 同 。 也 可 以 建 立 多 行 字 符 串 矩陣 。 創(chuàng) 建 :str=AATTATACTTTAAGTTCTGTGG用 號 。 訪 問 : Str(i):str的 第 i個 字 符 str(m:n) : m到 n的 n-m 1的 子 串 str(m:end)
16、: m到 最 后 一 個 字 符 的 子 串 常 見 的 有 關(guān) 字 符 串 操 作 的 函 數(shù) :Strmp(str1,str2): 字 符 串 str1,str2的 比 較 ;length(str) : str的 長 度Strmatch(s1,s2): 匹 配Findstr:查 找 字 符 串Num2str: 字 符 串 轉(zhuǎn) 換 結(jié) 構(gòu) 體 數(shù) 組 是 根 據(jù) 屬 性 名 ( field) 組 織起 來 的 不 同 類 型 數(shù) 據(jù) 的 集 合 , 結(jié) 構(gòu) 體 的任 何 一 個 屬 性 都 可 以 包 含 不 同 數(shù) 據(jù) 類 型 ,如 字 符 串 , 矩 陣 , 標(biāo) 量 等 。Name Ag
17、e Math EnglishWang 20 80 85Li 21 72 90 函 數(shù) 命 令 :struct 調(diào) 用 格 式 : s=struct(field1,value1,field2,value2,.) 例 如 : stu=struct(name,Liu,Wang,Age,20,21) Stu(1):查 看 第 1個 結(jié) 構(gòu) 體 的 數(shù) 據(jù) ; stu.name 查 看 所 有 的 name數(shù) 據(jù) Stu(2).name 查 看 第 2個 結(jié) 構(gòu) 的 name數(shù) 據(jù) 7 路 : 機(jī) 電 學(xué) 院 , 神 山 口 , 弋 磯 山 11路 : 機(jī) 電 學(xué) 院 , 新 市 口 bus=struc
18、t(name,platform,); bus(1).name=7路 ; bus(1).platform=機(jī) 電 學(xué) 院 神 山 口 弋 磯 山 ; bus(2).name=11路 ; bus(2).platform=機(jī) 電 學(xué) 院 新 市 口 ; 細(xì) 胞 數(shù) 組 是 以 單 元 為 元 素 的 數(shù) 組 , 每 個元 素 稱 為 單 元 , 每 個 單 元 可 以 包 含 其 他數(shù) 據(jù) 類 型 數(shù) 組 , 如 字 符 串 , 矩 陣 等 。 它由 ” ” 創(chuàng) 建 。 例 如 : B=time,20,2 3 訪 問 : Bi, B的 第 i個 單 元 。 Creating Cell Arrays
19、Cell indexingA(1,1) = 1 4 3; 0 5 8; 7 2 9;A(1,2) = Anne Smith;A(2,1) = 3+7i;A(2,2) = -pi:pi/10:pi; Content indexing A1,1 = 1 4 3; 0 5 8; 7 2 9;A1,2 = Anne Smith;A2,1 = 3+7i;A2,2 = -pi:pi/10:pi; A(i):A的 第 i個 單 元 ; Ai: A的 第 i個 單 元 的 內(nèi) 容 (值 )單 元 值 ( 內(nèi) 容 ) 類 型Celldisp cellplot 第 29頁 4.1 文 件 的 打 開 與 關(guān) 閉f
20、open函 數(shù) 的 調(diào) 用 格 式 為 :fid= fopen(文 件 名 , 打 開 方 式 )其 中 文 件 名 用 字 符 串 形 式 。 常 見 的 打 開 方 式 有 : r表 示 對 打 開 的 文 件 讀 數(shù) 據(jù) , w表 示 對 打 開 的 文 件 寫 數(shù) 據(jù) ,fid用 于 存 儲 文 件 句 柄 值 , 句 柄 值 用 來 標(biāo) 識該 數(shù) 據(jù) 文 件 , 其 他 函 數(shù) 可 以 利 用 它 對 該 數(shù)據(jù) 文 件 進(jìn) 行 操 作 。例 如 : fid = fopen(bus_data.txt,r) 關(guān) 閉 文 件 用 fclose函 數(shù) , 調(diào) 用 格 式 為 :sta=fcl
21、ose(fid)該 函 數(shù) 關(guān) 閉 fid所 表 示 的 文 件 。 sta表 示 關(guān) 閉 文 件 操 作 的 返 回 代 碼 , 若 關(guān) 閉 成 功 ,返 回 0, 否 則 返 回 1。 4.2 文 件 的 讀 寫 操 作 fread 函 數(shù) 可 以 讀 取 二 進(jìn) 制 文 件 的 數(shù) 據(jù) , 并 將 數(shù) 據(jù) 存 入 矩陣 。 其 調(diào) 用 格 式 為 :A,COUNT=fread(fid,size, precision)其 中 A用 于 存 放 讀 取 的 數(shù) 據(jù) , COUNT返 回 所 讀 取 的 數(shù) 據(jù)元 素 個 數(shù) , fid為 文 件 句 柄 , size為 可 選 項(xiàng) , 若 不
22、 選 用 則 讀取 整 個 文 件 內(nèi) 容 , 若 選 用 則 它 的 值 可 以 是 下 列 值 : (1) N表 示 讀 取 N個 元 素 到 一 個 列 向 量 。(2) Inf表 示 讀 取 整 個 文 件 。(3) M,N表 示 讀 數(shù) 據(jù) 到 M N的 矩 陣 中 , 數(shù) 據(jù) 按 列 存 放 。precision代 表 讀 寫 數(shù) 據(jù) 的 類 型 寫 二 進(jìn) 制 文 件fwrite 函 數(shù) 按 照 指 定 的 數(shù) 據(jù) 類 型 將 矩 陣 中 的 元 素寫 入 到 文 件 中 。 其 調(diào) 用 格 式 為 :COUNT=fwrite (fid, A, precision)其 中 COU
23、NT返 回 所 寫 的 數(shù) 據(jù) 元 素 個 數(shù) , fid為 文件 句 柄 , A用 來 存 放 寫 入 文 件 的 數(shù) 據(jù) , precision用 于 控 制 所 寫 數(shù) 據(jù) 的 類 型 , 其 形 式 與 fread函 數(shù) 相同 。 讀 文 本 文 件fscanf 函 數(shù) 的 調(diào) 用 格 式 為 :A,COUNT= fscanf (fid, format, size)其 中 A用 以 存 放 讀 取 的 數(shù) 據(jù) , COUNT返 回 所 讀 取的 數(shù) 據(jù) 元 素 個 數(shù) 。 fid為 文 件 句 柄 。 format用 以 控制 讀 取 的 數(shù) 據(jù) 格 式 , 由 %加 上 格 式 符
24、組 成 , 常 見的 格 式 符 有 d, f, c, s。size為 可 選 項(xiàng) , 決 定 矩 陣 A中 數(shù) 據(jù) 的 排 列 形 式 。 寫 文 本 文 件fprintf 函 數(shù) 的 調(diào) 用 格 式 為 :COUNT= fprintf(fid, format, A)其 中 A存 放 要 寫 入 文 件 的 數(shù) 據(jù) 。 先 按 format指 定的 格 式 將 數(shù) 據(jù) 矩 陣 A格 式 化 , 然 后 寫 入 到 fid所 指定 的 文 件 。 格 式 符 與 fscanf函 數(shù) 相 同 。 實(shí) 例 2: 讀 取 bus_data.txt的 數(shù) 據(jù)fid = fopen(bus_data.t
25、xt,r)j = 1; %人 數(shù) 計 數(shù) 器 。str = cell(520,1);while feof(fid)=0 strj= fgetl(fid);%讀 取 下 一 行 j=j+1;endfclose(fid); 實(shí) 例 3: 讀 取 grades.txt的 數(shù) 據(jù)John 85 90 95Ann 90 92 98Martin 100 95 97Rob 77 86 93法 一 : 使 用 import data;法 二 : 使 用 textscan函 數(shù) ;法 三 : 使 用 textread函 數(shù) ;法 四 : 逐 行 讀 取 。 MATLAB中 各 種 命 令 可 以 完 成 許 多
26、 單 一 的 任 務(wù) , 對 于 某些 較 為 復(fù) 雜 的 問 題 , 僅 靠 現(xiàn) 有 的 命 令 或 函 數(shù) 來 解 決 , 往 往是 難 以 達(dá) 到 目 的 。 為 此 , 要 運(yùn) 用 MATLAB編 程 語 言 編 制程 序 , 形 成 M-文 件 。 程 序 是 使 計 算 機(jī) 完 成 各 項(xiàng) 運(yùn) 算 的 命 令 集 , 運(yùn) 行 一 個 編 制 好的 程 序 , 計 算 機(jī) 會 從 第 一 條 命 令 行 開 始 , 一 行 接 一 行 地 執(zhí)行 相 應(yīng) 的 命 令 , 直 到 終 止 。 程 序 一 般 包 含 : 數(shù) 據(jù) 輸 入 , 數(shù) 據(jù) 處 理 和 結(jié) 果 輸 出 三 部 分
27、,其 中 數(shù) 據(jù) 處 理 是 核 心 。 關(guān) 系 與 邏 輯 運(yùn) 算 1、 關(guān) 系 操 作 符 關(guān) 系 操 作 符 說 明 小 于 大 于 = 大 于 或 等 于= = 等 于 = 不 等 于 2、 邏 輯 運(yùn) 算 符 邏 輯 操 作 符 說 明 與 或 非 M-文 件 中 輸 入 、 輸 出 命 令 直 接 賦 值 輸 入 : 提 示 對 話 輸 入 (input命 令 ) x=2; x=input(請 輸 入 參 數(shù) x=); a=1,2;3,4; a=input(請 輸 入 矩 陣 a=); s= any string!; s=input(Please input s=); 直 接 輸
28、出 : 格 式 控 制 輸 出 (fprintf命 令 ) x fprintf(x=%.0f, y=%.5fn,pi,pi); disp(a,b); fprintf(x=%5g, y=%10.5gn,N,pi); 控 制 流MATLAB提 供 三 種 決 策 或 控 制 流 結(jié) 構(gòu) : for循 環(huán) 、 while循 環(huán) 、 if-else-end結(jié)構(gòu) . 這 些 結(jié) 構(gòu) 經(jīng) 常 包 含 大 量 的 MATLAB命 令, 故 經(jīng) 常 出 現(xiàn) 在 MATLAB程 序 中 , 而 不 是 直接 加 在 MATLAB提 示 符 下 . M-文 件 中 循 環(huán) 控 制 命 令 (for命 令 ) 格
29、式 : for i=1:(step):n commands; end 作 用 : 重 復(fù) 執(zhí) 行 命 令 集 commands. 例 2: 求 奇 數(shù) 和 : s=1+3+5+(2k-1) n=input(請 輸 入 n=); s=0; for i=1:2:n s=s+i; fprintf(i=%.0f, s=%.0fn,i,s); endn 例 1: 求 和 : s=1+2+n n=input(請 輸 入 n=);s=0;fori=1:ns=s+i;fprintf(i=%.0f,s=%.0fn,i,s);end M-文 件 中 條 件 循 環(huán) 命 令 (while命 令 ) 格 式 : wh
30、ile (condition is true) commands; end 作 用 : 重 復(fù) 執(zhí) 行 命 令 集 commands. n 例 6: 求 和 : s=1+2+n3000s=0;k=1;whiles3000s=s+k;fprintf(k=%.0f,s=%.0fn,k,s);k=k+1;endn 例 7: 求 e: e=1+1+1/2!+1/3!+ (1/n!=1.0e-8p=p*i;r=1/p;e=e+r; fprintf(i=%.0f,r=%.9f,e=%.9fn,i,r,e);i=i+1;end 3、 If-Else-End結(jié) 構(gòu)( 1) 有 一 個 選 擇 的 一 般 形
31、式 是 : if expression commands end 如 果 在 表 達(dá) 式 (expression)里 的 所 有 元 素 為 真 ,就 執(zhí) 行 if和 end語 句 之 間 的 命 令 串 commands. MATLAB (fun1)1(),2( ,12 11)( 2 ffxx xxxf 求設(shè)例 先 建 立 M文 件 fun1.m定 義 函 數(shù) f( x) , 再 在Matlab命 令 窗 口 輸 入 fun1(2),fun1(-1)即 可 。 2) 有 三 個 或 更 多 的 選 擇 的 一 般 形 式 是 : if ( expression1) commands1 els
32、e if ( expression2) commands2 else if ( expression3) commands3 else if elsecommands endendend end )1(),5.0(),2( ,0 x 1x02 1x1xf(x) 32 fffxx 求設(shè)例 先 建 立 M文 件 fun2.m定 義 函 數(shù) f( x) , 再 在Matlab命 令 窗 口 輸 入 fun2(2),fun2(0.5), fun2(-1)即可 。 MATLAB(fun2) 返 回 MATLAB的 內(nèi) 部 函 數(shù) 是 有 限 的 , 有 時 為 了 研 究 某一 個 函 數(shù) 的 各 種
33、性 態(tài) , 需 要 為 MATLAB定 義 新 函 數(shù) ,為 此 必 須 編 寫 函 數(shù) 文 件 . 函 數(shù) 文 件 是 文 件 名 后 綴 為 M的 文 件 , 這 類 文 件 的 第 一 行 必 須 是 一 特 殊 字 符function開 始 , 格 式 為 : function 因 變 量 名 =函 數(shù) 名 ( 自 變 量 名 )函 數(shù) 值 的 獲 得 必 須 通 過 具 體 的 運(yùn) 算 實(shí) 現(xiàn) , 并 賦 給 因 變量 . M文 件 建 立 方 法 : 1. 在 Matlab中 , 點(diǎn) :File-New-M-file 2. 在 編 輯 窗 口 中 輸 入 程 序 內(nèi) 容 3. :
34、File-Save, 存 盤 , M文 件 名 必 須 與 函 數(shù) 名 一 致 。Matlab的 應(yīng) 用 程 序 也 以 M文 件 保 存 。 例 : 定 義 函 數(shù) f(x1,x2)=100(x2-x12)2+(1-x1)2function f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)21.建 立 M文 件 : fun.m MATLAB(fun)2. 可 以 直 接 使 用 函 數(shù) fun.m例 如 : 計 算 f(1,2), 只 需 在 Matlab命 令 窗 口 鍵 入 命 令 :x=1 2fun(x) 返 回 調(diào) 試 經(jīng) 驗(yàn)( 1) 去 掉 文 件 中 所 選
35、 擇 的 行 的 分 號 , 以 便 中 間 結(jié) 果 顯 示 在 命令 窗 口 中 。( 2) 在 文 件 中 加 入 顯 示 感 興 趣 的 變 量 的 語 句 ( 包 括 使 用 disp在內(nèi) ) 。( 3) 把 keyboard命 令 放 在 文 件 中 所 選 擇 的 地 方 , 給 鍵 盤 暫 時 控制 權(quán) 。 這 樣 , 可 以 查 詢 函 數(shù) 空 間 并 按 需 要 改 變 其 值 。( 4) 利 用 echo命 令 , 使 運(yùn) 行 時 在 屏 幕 上 逐 行 顯 示 文 件 內(nèi) 容 :echo on 能 顯 示 m腳 本 文 件 ; echo FunName on 能 顯 示
36、名 為FunName的 M函 數(shù) 文 件 。 ( 5) 在 M文 件 開 始 , 在 function語 句 前 加 上 , 將 函 數(shù) M文 件改 變 為 腳 本 M文 件 。 當(dāng) MATLAB執(zhí) 行 該 腳 本 M文 件 時 , 該 空間 就 是 MATLAB工 作 空 間 。 這 樣 , 當(dāng) 發(fā) 生 錯 誤 時 可 以 詢 問 。 程 序 的 優(yōu) 化1) 盡 量 避 免 使 用 循 環(huán) 循 環(huán) 語 句 及 循 環(huán) 體 經(jīng) 常 被 認(rèn) 為 是 MATLAB編 程 的 瓶 頸 問 題 。 改 進(jìn) 這 樣 的 狀 況 有 兩 種方 法 : a.盡 量 用 向 量 化 的 運(yùn) 算 來 代 替 循
37、 環(huán) 操 作 ; b.在 必 須 使 用 多 重 循 環(huán) 的 情 況 下 , 如 果 兩 個循 環(huán) 執(zhí) 行 的 次 數(shù) 不 同 , 則 建 議 在 循 環(huán) 的 外環(huán) 執(zhí) 行 循 環(huán) 次 數(shù) 越 少 的 , 內(nèi) 環(huán) 執(zhí) 行 循 環(huán) 次數(shù) 越 多 的 , 這 樣 也 可 以 顯 著 提 高 速 度 。 2) 大 型 矩 陣 的 預(yù) 先 定 維 給 大 型 矩 陣 動 態(tài) 地 定 維 是 個 很 浪 費(fèi) 時 間 的 事 。建 議 在 定 義 大 矩 陣 時 , 首 先 用 MATLAB的內(nèi) 在 函 數(shù) , 如 zeros()或 ones()對 之 先 進(jìn) 行 定維 , 然 后 再 進(jìn) 行 賦 值 處
38、 理 , 這 樣 會 顯 著 減 少所 需 的 時 間 。3) 優(yōu) 先 考 慮 內(nèi) 在 函 數(shù) 矩 形 運(yùn) 算 應(yīng) 該 盡 量 采 用 MATLAB的 內(nèi) 在 函 數(shù) ,因 為 內(nèi) 在 函 數(shù) 是 由 更 底 層 的 編 程 語 言 C構(gòu) 造的 , 其 執(zhí) 行 速 度 顯 然 快 于 使 用 循 環(huán) 的 矩 陣 運(yùn)算 。 4) 采 用 有 效 算 法 在 實(shí) 際 應(yīng) 用 中 , 解 決 同 樣 的 數(shù) 學(xué) 問 題 經(jīng) 常有 各 種 各 樣 的 算 法 。 例 如 求 解 定 積 分 的數(shù) 值 解 法 在 MATLAB中 就 提 供 了 兩 個 函數(shù) quad ()和 quad8(), 其 中
39、后 一 個 算 法 在精 度 , 速 度 上 都 能 明 顯 高 于 前 一 種 方 法 。 5) 應(yīng) 用 Mex技 術(shù) 雖 然 采 用 了 很 多 措 施 , 但 執(zhí) 行 速 度 仍 然 很慢 , 比 如 說 耗 時 的 循 環(huán) 視 不 可 避 免 的 ,這 樣 就 應(yīng) 該 考 慮 用 其 他 語 言 , 如 C或Fortran語 言 .按 照 Mex技 術(shù) 要 求 的 格 式 編寫 相 應(yīng) 部 分 的 程 序 , 然 后 通 過 編 譯 連 接 ,形 成 在 MATLAB可 以 直 接 調(diào) 用 的 動 態(tài) 連接 庫 ( DLL) 文 件 , 這 樣 可 以 顯 著 地 加快 運(yùn) 算 速 度 。 謝 謝 !
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案