《MATLAB基礎(chǔ)及應(yīng)用》課件全套 曹敦虔 第1-7章 概述- 數(shù)字圖像處理_第1頁(yè)
《MATLAB基礎(chǔ)及應(yīng)用》課件全套 曹敦虔 第1-7章 概述- 數(shù)字圖像處理_第2頁(yè)
《MATLAB基礎(chǔ)及應(yīng)用》課件全套 曹敦虔 第1-7章 概述- 數(shù)字圖像處理_第3頁(yè)
《MATLAB基礎(chǔ)及應(yīng)用》課件全套 曹敦虔 第1-7章 概述- 數(shù)字圖像處理_第4頁(yè)
《MATLAB基礎(chǔ)及應(yīng)用》課件全套 曹敦虔 第1-7章 概述- 數(shù)字圖像處理_第5頁(yè)
已閱讀5頁(yè),還剩573頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

MATLAB基礎(chǔ)及應(yīng)用第1章 概述本章學(xué)習(xí)重點(diǎn)掌握內(nèi)容:MATLAB發(fā)展的歷程及特點(diǎn)MATLAB界面和工具箱MATLAB通用命令簡(jiǎn)單的MATLAB程序結(jié)構(gòu)第1章 概述1.1MATLAB發(fā)展歷史1.2MATLAB特點(diǎn)1.3MATLAB界面1.4MATLAB工具箱1.5MATLAB通用命令1.6簡(jiǎn)單MATLAB程序示例1.1 MATLAB發(fā)展歷史MATLAB是MatrixLaboratory的簡(jiǎn)稱,是由美國(guó)MathWorks公司開發(fā)的用于數(shù)值計(jì)算和圖形處理的科學(xué)計(jì)算系統(tǒng).1983年,Little提議開發(fā)基于MATLAB的商用產(chǎn)品.1984年發(fā)布了運(yùn)行在PC上的商業(yè)化版本MATLAB3.0.1993年,在MATLAB4.1中加入了以Maple內(nèi)核為“引擎”的符號(hào)計(jì)算工具箱,使MATLAB集數(shù)值計(jì)算和符號(hào)計(jì)算兩大功能于一身.2000年發(fā)布了桌面版MATLAB6.0,在核心數(shù)值算法、用戶界面、外部接口、桌面應(yīng)用等諸多方面都有了極大改進(jìn).2006年以后,MathWorks公司每年進(jìn)行兩次產(chǎn)品發(fā)布.1.2 MATLAB特點(diǎn)MATLAB具有強(qiáng)大數(shù)值計(jì)算能力;MATLAB的基本運(yùn)算對(duì)象為數(shù)組,可以進(jìn)行批量數(shù)據(jù)處理;MATLAB語法簡(jiǎn)潔,程序簡(jiǎn)短;MATLAB提供了大量的工具箱,

可以快速、高效地解決一些專業(yè)領(lǐng)域問題;MATLAB具有分支、循環(huán)等流程控制語句,可以自行設(shè)計(jì)算法并實(shí)現(xiàn),以處理更復(fù)雜的任務(wù).1.3MATLAB界面代碼編輯器工作區(qū)命令窗口當(dāng)前文件夾工具欄主界面1.3MATLAB界面1.工具欄主頁(yè)工具欄主要用于文件處理、數(shù)據(jù)導(dǎo)入、代碼分析、設(shè)置MATLAB環(huán)境和查看幫助文檔等.1.3MATLAB界面1.工具欄繪圖工具欄數(shù)據(jù)可視化的一種快捷方式,用戶通過它可以快速地繪制線圖、直方圖、餅圖、等高線圖、三維圖形等不同種類的圖形.只要在工作區(qū)中選中數(shù)據(jù),再根據(jù)需要點(diǎn)擊繪圖按鈕,MATLAB就可以呈現(xiàn)相應(yīng)的數(shù)據(jù)圖形.1.3MATLAB界面1.工具欄應(yīng)用程序工具欄包含了多個(gè)實(shí)用程序,可以進(jìn)行曲線擬合、優(yōu)化、符號(hào)計(jì)算、控制系統(tǒng)設(shè)計(jì)與分析、信號(hào)分析、圖像處理、應(yīng)用程序打包等.使用這些程序不需要編寫程序,或輸入少量代碼即可完成較復(fù)雜的工作.1.3MATLAB界面1.工具欄編輯器工具欄提供了編寫、調(diào)試程序所需的工具.1.3MATLAB界面1.工具欄發(fā)布工具欄提供了在注釋中進(jìn)行格式化文本的工具.編程人員可以注釋中編寫程序的使用說明,并在發(fā)布后成為該程序的幫助文檔.注釋中可以進(jìn)行類似Latex的格式控制,使幫助文檔更美觀.1.3MATLAB界面2.當(dāng)前文件夾當(dāng)前文件夾是MATLAB的工作目錄,MATLAB在編譯程序時(shí)遇到函數(shù)調(diào)用會(huì)按照一定的順序搜索被調(diào)函數(shù),而當(dāng)前文件夾的優(yōu)先級(jí)要高于搜索路徑的優(yōu)先級(jí),所以通常將當(dāng)前正在編寫的程序保存在當(dāng)前文件夾,以方便進(jìn)行編輯和調(diào)式.可以通過點(diǎn)擊或來改變當(dāng)前文件夾.1.3MATLAB界面3.代碼編輯器代碼編輯器是一個(gè)文本編輯器,具有代碼高亮顯示功能,可以使用注釋符號(hào)%%進(jìn)行分段,MATLAB程序的編寫工作主要是在代碼編輯器中完成.程序編寫完成后即利用編輯器工具欄上的工具進(jìn)行運(yùn)行和調(diào)試程序.1.3MATLAB界面4.命令窗口命令窗口是MATLAB的主要交互窗口,用于輸入命令和顯示非圖形結(jié)果,類似于Windows的命令行窗口.1.3MATLAB界面5.歷史命令記錄窗口歷史命令記錄窗口自動(dòng)記錄以前在命令窗口中執(zhí)行過的命令,并可將這些命令重新調(diào)入命令窗口中執(zhí)行.1.3MATLAB界面6.工作區(qū)工作區(qū)顯示當(dāng)前MATLAB所管理的內(nèi)存中變量狀態(tài),可顯示變量的名稱、取值、維數(shù)大小、所占內(nèi)存大小、數(shù)據(jù)類型以及最大值、最小值等統(tǒng)計(jì)量,通過工作區(qū),編程人員可以清楚了解當(dāng)前內(nèi)存中變量狀況.1.4MATLAB工具箱MATLAB工具箱是對(duì)MATLAB核心功能的擴(kuò)展,每一個(gè)工具箱都是解決某個(gè)領(lǐng)域問題的函數(shù)集合.用戶也可以創(chuàng)建自己的工具箱,并分享給他人使用.MATLAB提供了大量工具箱,用戶可以在安裝MATLAB時(shí)選擇是否安裝.默認(rèn)情況下工具箱放在“安裝目錄\Matlab\版本號(hào)\toolbox\”文件夾下.1.5MATLAB通用命令MATLAB的通用命令是指在操作軟件過程中經(jīng)常需要使用的命令.可以在命令行窗口的提示符>>后面輸入命令,也可以在程序中使用.分為常用管理命令、變量和工作區(qū)管理命令、命令行窗口控制、文件和工作環(huán)境管理等,有些命令可使用快捷鍵來執(zhí)行.1.5MATLAB通用命令1.常用管理命令命令說明命令說明clc清除命令窗口format控制輸出顯示格式clf清除圖形窗口help幫助文檔cputime獲取CPU時(shí)間input等待用戶輸入數(shù)據(jù)demo打開演示程序profile探查函數(shù)的執(zhí)行時(shí)間disp顯示文本quit退出MATLABdoc在幫助瀏覽器中打開幫助文檔warning顯示警告信息error顯示出錯(cuò)信息

1.5MATLAB通用命令2.變量和工作區(qū)管理命令命令說明命令說明clear從工作區(qū)中清除變量save將工作區(qū)變量保存到磁盤load從磁盤中恢復(fù)變量who列出內(nèi)存中的變量pack內(nèi)存碎片整理whos列出變量的詳細(xì)信息1.5MATLAB通用命令3.文件和文件夾管理命令命令說明命令說明addpath將目錄添加到搜索路徑上matlabroot獲取MATLAB安裝的根目錄名cd改變工作目錄mkdir建立目錄copyfile復(fù)制文件path顯示搜索路徑delete刪除文件type顯示文件內(nèi)容dir顯示當(dāng)前目錄或指定目錄下的文件matlabroot獲取MATLAB安裝的根目錄名1.5MATLAB通用命令4.快捷鍵命令說明命令說明Ctrl+[減少縮進(jìn)Ctrl+R注釋一行或多行Ctrl+]增加縮進(jìn)Ctrl+S保存Ctrl+A全選Ctrl+T取消注釋一行或多行Ctrl+F查找或替換Ctrl+W關(guān)閉文件Ctrl+I智能縮進(jìn)Ctrl+Y取消撤銷Ctrl+N新建文件Ctrl+Z撤銷修改Ctrl+O打開文件Shift+Tab減少縮進(jìn)Ctrl+P打印程序代碼Tab增加縮進(jìn)或顯示完整命令編輯器窗口快捷鍵1.5MATLAB通用命令4.快捷鍵命令說明命令說明↑前一條歷史命令Ctrl+Q退出MATLAB↓后一條歷史命令Esc清楚輸入的命令Ctrl+C中斷當(dāng)前程序的執(zhí)行過程Shift+Enter只換行不執(zhí)行代碼命令窗口快捷鍵1.5MATLAB通用命令4.快捷鍵命令說明命令說明Ctrl+Shift+Enter運(yùn)行當(dāng)前節(jié)并前進(jìn)到下一節(jié)F10單步執(zhí)行,遇到函數(shù)調(diào)用不進(jìn)入函數(shù)內(nèi)部Shift+F11執(zhí)行完當(dāng)前函數(shù)的剩余部分,直至函數(shù)結(jié)束F11單步執(zhí)行,遇到函數(shù)調(diào)用進(jìn)入函數(shù)內(nèi)部F5運(yùn)行程序F12設(shè)置或取消斷點(diǎn)Ctrl+Shift+Enter運(yùn)行當(dāng)前節(jié)并前進(jìn)到下一節(jié)F10單步執(zhí)行,遇到函數(shù)調(diào)用不進(jìn)入函數(shù)內(nèi)部程序調(diào)試快捷鍵1.5MATLAB通用命令5.標(biāo)點(diǎn)符號(hào)標(biāo)點(diǎn)符號(hào)說明標(biāo)點(diǎn)符號(hào)說明:冒號(hào),有多種功能()小括號(hào),有多種功能;分號(hào),語句結(jié)束符,抑制輸出[]中括號(hào),定義數(shù)組,逗號(hào),多個(gè)數(shù)的分隔符{}大括號(hào),定義單元數(shù)組%百分號(hào),注釋標(biāo)記...省略號(hào),續(xù)行'單引號(hào),字符串界定符~波浪號(hào),無用結(jié)果代替符1.6 簡(jiǎn)單MATLAB程序示例新建一個(gè)腳本文件,在編輯器中輸出下面程序:r=5;

%將5賦值給變量rs=2*pi*r^2;%計(jì)算以r為半徑的圓的面積s

%顯示結(jié)果點(diǎn)擊保存按鈕,將文件名命名為sample1.m.再點(diǎn)擊運(yùn)行按鈕運(yùn)行程序,將在命令窗口中顯示運(yùn)行結(jié)果:>>sample1s=157.07961.6 簡(jiǎn)單MATLAB程序示例說明:程序中除了字符串和注釋可以有全角符號(hào)外,其余所有代碼必須是半角符號(hào),包括標(biāo)點(diǎn)符號(hào)、數(shù)字和字母.MATLAB的變量不需要預(yù)先定義即可直接使用;%后的內(nèi)容為注釋,不參與程序的執(zhí)行過程;如果程序編譯有錯(cuò),將在命令窗口中顯示出錯(cuò)信息,通過點(diǎn)擊出錯(cuò)信息中的鏈接,可跳到錯(cuò)誤所在行或附件.程序文件名必須符合標(biāo)識(shí)符的命名規(guī)則,只能由字母、數(shù)字和下劃線組成,且只能以字母開始.1.6 簡(jiǎn)單MATLAB程序示例說明:可在命令窗口中輸入程序文件的主文件名來執(zhí)行該程序.如果要運(yùn)行的程序不在當(dāng)前文件夾和搜索路徑下,MATLAB將找不到該程序,可設(shè)置當(dāng)前文件夾為程序所在文件夾,或添加程序所在文件夾到搜索路徑下.如果希望不顯示計(jì)算結(jié)果,則以分號(hào)結(jié)束語句;如果希望顯示計(jì)算結(jié)果,則不用分號(hào)結(jié)束.程序運(yùn)行的文字結(jié)果顯示在命令窗口中,圖形結(jié)果在彈出的獨(dú)立窗口上顯示.MATLAB基礎(chǔ)及應(yīng)用曹敦虔編著第2章矩陣生成與運(yùn)算本章學(xué)習(xí)重點(diǎn)掌握內(nèi)容:MATLAB基本數(shù)據(jù)類型數(shù)組生成與訪問數(shù)組元素?cái)?shù)組變形數(shù)組運(yùn)算與矩陣運(yùn)算第2章矩陣生成與運(yùn)算2.1

數(shù)據(jù)類型2.2數(shù)組生成2.3

訪問數(shù)組元素2.4

數(shù)組變形2.5

數(shù)組運(yùn)算2.6

矩陣運(yùn)算2.1數(shù)據(jù)類型數(shù)組(array)邏輯(logical)字符(char)數(shù)值(numeric)uint8、int8、int16、uint16、int32、uint32、int64、uint64雙精度(double)單精度(single)復(fù)數(shù)型(complex)元胞(cell)結(jié)構(gòu)體(stucture)表(table)函數(shù)句柄(functionhandle)MATLAB數(shù)據(jù)類型2.1數(shù)據(jù)類型1.整型整型又可細(xì)分為int8、int16、int32、int64、uint8、uint16、uint32、uint64共8種,前4種為有符號(hào)整型,后4種為無符號(hào)整型.示例:a=int8(12);b=int8(9);c=a+bc=212.1數(shù)據(jù)類型2.浮點(diǎn)型浮點(diǎn)型有單精度浮點(diǎn)型(single)和雙精度浮點(diǎn)型(double)兩種,其中double是MATLAB的默認(rèn)數(shù)據(jù)類型.示例:a=single(2.5);

%a是單精度浮點(diǎn)數(shù)b=3.1;

%b是雙精度浮點(diǎn)數(shù)c=b/a

%c是單精度浮點(diǎn)數(shù)c=1.24002.1數(shù)據(jù)類型3.復(fù)數(shù)型MATLAB可以直接進(jìn)行復(fù)數(shù)運(yùn)算,使用未賦值的i或j表示虛數(shù)單位.

示例:a=1+2i;b=3+4i;c=a*bc=-5.0000+10.0000i2.1數(shù)據(jù)類型4.邏輯型邏輯型數(shù)據(jù)的取值只有兩種true和false,在顯示時(shí)為1和0,通常用來表示真/假、是/否、對(duì)/錯(cuò)、成立/不成立等.示例:A=logical([0123])A=0111sum(A)ans=32.1數(shù)據(jù)類型5.字符型在MATLAB中使用單引號(hào)對(duì)來表示字符型數(shù)據(jù),1×n的字符型數(shù)組稱為字符串.多個(gè)字符串可以使用多行數(shù)組來表示,但是各個(gè)字符串長(zhǎng)度必須相同.

示例:a='Hello'%a是一個(gè)字符串,也是一個(gè)1×5的字符型數(shù)組a=HelloA=['abcd';'1234']A=abcd12342.1數(shù)據(jù)類型6.單元單元也稱細(xì)胞或元胞,它可以容納任何類型的數(shù)據(jù),包括數(shù)組、結(jié)構(gòu)、單元數(shù)組,對(duì)于存儲(chǔ)復(fù)雜數(shù)據(jù)非常有用.示例:a='Hello'%a是一個(gè)字符串,也是一個(gè)1×5的字符型數(shù)組a=HelloA=['abcd';'1234']A=abcd12342.1數(shù)據(jù)類型6.單元單元也稱細(xì)胞或元胞,它可以容納任何類型的數(shù)據(jù),包括數(shù)組、結(jié)構(gòu)、單元數(shù)組,對(duì)于存儲(chǔ)復(fù)雜數(shù)據(jù)非常有用.示例:a='Hello'%a是一個(gè)字符串,也是一個(gè)1×5的字符型數(shù)組a=HelloA=['abcd';'1234']A=abcd12342.1數(shù)據(jù)類型6.單元取出單元數(shù)組元素有兩種用法,一種是使用大括號(hào){},取出的結(jié)果是單元內(nèi)所裝的數(shù)據(jù),另一種是使用小括號(hào)(),取出的是單元本身.示例:A={[1,2],[3,4],[5],[6,7],[8],[9,10,11]};B=A{1};%取出第一個(gè)單元內(nèi)的數(shù)據(jù),結(jié)果是[1,2]C=A(1);%取出第一個(gè)單元,結(jié)果是{[1,2]}2.1數(shù)據(jù)類型7.結(jié)構(gòu)體結(jié)構(gòu)體是由若干個(gè)成員組成的一個(gè)整體,

每個(gè)成員包含成員名和值.生成結(jié)構(gòu)體對(duì)象的方法有多種.示例:student1.Name='Weixiaobao';student1.Age=20;student1.Email='wxb2138721@163.com';student1student1=Name:'Weixiaobao'Age:20Email:'wxb2138721@163.com'student2=struct('Name','Liwei','Age',21,'Email','Liwei321809@126.com')student2=Name:'Liwei'Age:21Email:'Liwei321809@126.com'2.1數(shù)據(jù)類型8.函數(shù)句柄函數(shù)句柄可以標(biāo)識(shí)一個(gè)函數(shù),可以通過函數(shù)句柄來調(diào)用函數(shù).獲取函數(shù)句柄的方法有:1)變量名=@函數(shù)名;2)變量名=str2func('函數(shù)名');3)變量名=@(輸入?yún)?shù)列表)函數(shù)表達(dá)式.2.1數(shù)據(jù)類型8.函數(shù)句柄

示例:f=@sin;

%獲取sin函數(shù)的句柄f(pi/2)ans=1f=str2func('cos');

%獲取cos函數(shù)的句柄f(pi)ans=-1f=@(x)sin(x)./x;

%定義一個(gè)匿名函數(shù)f(0.001)ans=1.00002.1數(shù)據(jù)類型9.表格表格是一種復(fù)雜的數(shù)據(jù)類型,可以處理包含表頭、行、列的數(shù)據(jù),與普通數(shù)組不同的是表格中不同列的數(shù)據(jù)類型可以不同,但是比單元數(shù)組又更加規(guī)范.表格由若干行向變量和若干列向變量組成.2.1數(shù)據(jù)類型9.表格學(xué)號(hào)姓名入學(xué)年份專業(yè)成績(jī)11253020123趙曉燕2002數(shù)學(xué)與應(yīng)用數(shù)學(xué)8511253020124葉超2002信息與計(jì)算科學(xué)7811253130111苗苗2013物理學(xué)9111253140227趙懷安2014計(jì)算機(jī)科學(xué)與技術(shù)86studentID=[10223;10224;11311;11427];studentName=['趙曉燕';'葉超';'苗苗';'趙懷安'];%注意使用空格補(bǔ)齊startYear=[2002;2002;2013;2014];major=[2002;2002;2013;2014];score=[85;78;91;86];T=table(studentID,studentName,startYear,major,score)%生成表格2.2數(shù)組生成2.2.1一般數(shù)組生成如果知道數(shù)組的所有元素,可以通過羅列元素的方法生成數(shù)組.同一行之間的元素用空格或逗號(hào)分隔,行與行之間用分號(hào)分隔.示例:A=[6,3,5,1,2]%生成一行A=63512B=[8;2;4;7;5]%生成一列B=82475C=[123;456;789]%生成一個(gè)3×3矩陣C=1234567892.2數(shù)組生成

2.2數(shù)組生成A=zeros(3,3)

%3階零矩陣A=000000000B=ones(3,3)

%3階1矩陣B=111111111C=eye(3)

%3階單位陣C=100010001F=inf(3,3)

%3階無窮大矩陣F=InfInfInfInfInfInfInfInfInf2.2數(shù)組生成D=true(3,3)%3階真矩陣D=111111111E=false(3,3)%3階假矩陣E=000000000G=rand(3,3)%3階隨機(jī)矩陣G=0.81470.91340.27850.90580.63240.54690.12700.09750.9575H=magic(4)%4階魔方陣H=162313511108976124141512.2數(shù)組生成V=diag(H)%獲取矩陣H的主對(duì)角元素,構(gòu)成一個(gè)列向量V=161161X=1:8X=12345678Y=linspace(-3,3,7)%將區(qū)間[-3,3]均勻剖分為6份,生成7個(gè)分點(diǎn)Y=-3-2

-10123A=floor(2*rand(3,3))%生成一個(gè)3×3的數(shù)組,每個(gè)元素是0或1的隨機(jī)整數(shù)A=1010000112.2數(shù)組生成2.2.3稀疏矩陣當(dāng)大型矩陣中只包含少量非零元素時(shí),使用稀疏矩陣來存儲(chǔ)可節(jié)約大量空間.相對(duì)于稀疏矩陣,普通矩陣稱為滿矩陣.可以將所有MATLAB內(nèi)置算術(shù)運(yùn)算、邏輯運(yùn)算和索引運(yùn)算應(yīng)用于稀疏矩陣,或應(yīng)用于稀疏矩陣和滿矩陣兩者.對(duì)稀疏矩陣執(zhí)行的運(yùn)算返回稀疏矩陣,對(duì)滿矩陣執(zhí)行的運(yùn)算返回滿矩陣.2.2數(shù)組生成創(chuàng)建稀疏矩陣的方法有:spalloc:為稀疏矩陣分配空間spdiags:提取非零對(duì)角線并創(chuàng)建稀疏帶狀對(duì)角矩陣speye:稀疏單位矩陣sprand:稀疏均勻分布隨機(jī)矩陣sprandn:稀疏正態(tài)分布隨機(jī)矩陣sprandsym:稀疏對(duì)稱隨機(jī)矩陣sparse:創(chuàng)建稀疏矩陣2.2數(shù)組生成常用的稀疏矩陣操作函數(shù)有:issparse:確定輸入是否為稀疏矩陣nnz:非零矩陣元素的數(shù)目nonzeros:非零矩陣元素nzmax:為非零矩陣元素分配的存儲(chǔ)量spfun:將函數(shù)應(yīng)用于非零稀疏矩陣元素spones:將非零稀疏矩陣元素替換為1spparms:為稀疏矩陣?yán)淘O(shè)置參數(shù)spy:可視化矩陣的稀疏模式find:查找非零元素的索引和值full:將稀疏矩陣轉(zhuǎn)換為滿存儲(chǔ)2.2數(shù)組生成S=spalloc(1000,1000,50);

%創(chuàng)建1000×1000稀疏矩陣,使之具有50個(gè)非零值的空間I=speye(1000);%創(chuàng)建稀疏單位方陣S=sparse(1000,2000);

%生成零稀疏矩陣S=sparse(A);%將滿矩陣轉(zhuǎn)換為稀疏矩陣

A=sprand(1000,1000,0.0001);n=nnz(A);

%非零項(xiàng)個(gè)數(shù)spy(A);

%可視化矩陣的稀疏模式2.2數(shù)組生成2.2.4符號(hào)矩陣MATLAB支持符號(hào)運(yùn)算,可以進(jìn)行公式推導(dǎo)、微積分運(yùn)算、方程求解等運(yùn)算.在進(jìn)行符號(hào)運(yùn)算前,首先要定義符號(hào)變量或符號(hào)矩陣.定義單個(gè)符號(hào)變量或符號(hào)矩陣使用sym命令,定義多個(gè)符號(hào)變量使用syms命令.x=sym('x');%定義符號(hào)變量y=3*x^2;dy=diff(y,x)%求導(dǎo)F=int(y,x)%求不定積分symsabc;%定義多個(gè)符號(hào)變量z=a*x^2+b*x+c;solve(z,x)%求方程的解A=sym('[a,2*b;3*c,0]');%定義符號(hào)矩陣det(A)%計(jì)算行列式的值inv(A)%計(jì)算符號(hào)矩陣的逆2.3訪問數(shù)組元素MATLAB可以訪問單個(gè)數(shù)組元素,也可以批量訪問數(shù)組元素.一維數(shù)組V的第i個(gè)元素:V(i)二維數(shù)組A的第i行第j列元素:A(i,j)二維數(shù)組A的第i行:A(i,:),結(jié)果為一行向量二維數(shù)組A的第j列:A(:,j),結(jié)果為一列向量子矩陣:A(i1:i2,j1:j2),

矩陣A的第i1行到i2行與第j1列到j(luò)2列交叉位置的所有元素2.3訪問數(shù)組元素A=[123;456;789];A(1,3)ans=3A(2,:)%獲取第2行ans=456A(:,3)%獲取第3列ans=369A(1:2,2:3)%獲取1-2行、2-3列元素組成的子矩陣ans=2356A(2:end,:)

%獲取從第2行到最后一行的所有元素組成的子矩陣ans=4567892.3訪問數(shù)組元素更一般地,數(shù)組下標(biāo)可以是任意的整數(shù)數(shù)組,只要下標(biāo)不越界即可.獲取指定行、列交叉位置元素組成的數(shù)組:A(U,V).如果U,V是兩個(gè)整數(shù)向量,U=[u1,u2,?,um],V=[v1,v2,?,vn],則依次取出A的第u1,u2,?,um行與第v1,v2,?,vn列交叉位置的所有元素.2.3訪問數(shù)組元素A([12],[31])%取出矩陣A的第1、2行第3、1列的元素組成一個(gè)矩陣ans=3164A([11],:)%取出矩陣A的第1行兩次組成一個(gè)矩陣ans=123123A(:,ones(1,5))%取出矩陣A的第1列5次組成一個(gè)矩陣ans=111114444477777A(1:2:end,2:2:end)%取出矩陣A的奇數(shù)行偶數(shù)列組成一個(gè)矩陣ans=2

82.3訪問數(shù)組元素MATLAB還可以使用邏輯數(shù)組作為下標(biāo),表示取出邏輯數(shù)組中元素為真的位置對(duì)應(yīng)的原數(shù)組元素,構(gòu)成一個(gè)列向量.要求邏輯數(shù)組與原數(shù)組同維.示例:B=A>5%B與A是同維邏輯矩陣,A的元素大于5的位置為真,其它為假B=000001111A(B)%取出A中所有大于5的元素,構(gòu)成一個(gè)列向量.與A(A>5)結(jié)果相同ans=786

92.4數(shù)組變形改變數(shù)組的維數(shù),提取數(shù)組的行、列,刪除行、列,合并數(shù)組等操作統(tǒng)稱為數(shù)組變形.矩陣轉(zhuǎn)置:A.'或A'.若A是實(shí)矩陣,則A.'與A'同為轉(zhuǎn)置;若A是復(fù)數(shù)矩陣,則A.'為轉(zhuǎn)置,A'為共軛轉(zhuǎn)置矩陣合并:C=[A,B]或C=[AB](橫向),C=[A;B](縱向).矩陣重復(fù):B=repmat(A,s,t)

.

由矩陣A橫向重復(fù)s次,縱向重復(fù)t次的一個(gè)大矩陣2.4數(shù)組變形刪除行或列:A(i,:)=[](刪除第i行),A(:,j)=[](刪除第j列).若i或j是向量,則可刪除多行或多列。矩陣翻轉(zhuǎn):B=A(:,end:?1:1)或B=fliplr(A)(橫向翻轉(zhuǎn)),B=A(end:?1:1,:)或B=flipud(A)

(縱向翻轉(zhuǎn)),B=flipdim(A,dim)(按指定維數(shù)翻轉(zhuǎn))。旋轉(zhuǎn)矩陣:B=rot90(A,k),將矩陣逆時(shí)針旋轉(zhuǎn)k×90°,其中k=±1,±2,?維數(shù)重置:B=reshape(A,[st]),改變矩陣的行數(shù)和列數(shù),s×t等于A的元素個(gè)數(shù)。如果希望變成一列,可以使用B=A(:).2.4數(shù)組變形A=[123;456;789];B=[100;010;001];H=A(:);%將數(shù)組A的所有元素排成一列H'

%將列向量轉(zhuǎn)置成行向量ans=147258369C=[A,B]%橫向合并兩個(gè)矩陣C=123100456010789001D=[A;B]%縱向合并兩個(gè)矩陣D=1234567891000100012.4數(shù)組變形C(1,:)=[]%刪除第一行C=456010789001D(:,end)=[]%刪除最后一列D=124578100100fliplr(B)%將B橫向翻轉(zhuǎn)ans=001010100rot90(A,1)%將A逆時(shí)針旋轉(zhuǎn)90度ans=3692581472.4數(shù)組變形reshape(C,[34])%將C重新排列成3×4矩陣ans=480076005911B=repmat(A,1,2)%將A橫向復(fù)制1遍,縱向復(fù)制2遍B=1231234564567897892.4數(shù)組變形MATLAB可以使用size、length、numel、ndims等函數(shù)獲取數(shù)組的維數(shù)相關(guān)信息.[m,n]=size(A);

%m為行數(shù),n為列數(shù)m=size(A,1);

%獲取行數(shù)n=size(A,2);

%獲取列數(shù)n=length(V);

%獲取向量長(zhǎng)度n=ndims(A);

%獲取維數(shù)n=numel(A);%獲取元素個(gè)數(shù)2.5數(shù)組運(yùn)算數(shù)組運(yùn)算是指對(duì)數(shù)組元素進(jìn)行的運(yùn)算,可以看成是一種批量數(shù)據(jù)處理.對(duì)于二元運(yùn)算符,要求參與運(yùn)算的兩個(gè)數(shù)組是同維數(shù)組,或其中一個(gè)是標(biāo)量,另一個(gè)是數(shù)組.如果兩個(gè)是同維數(shù)組,則將對(duì)應(yīng)的元素進(jìn)行運(yùn)算;如果其中一個(gè)是標(biāo)量,另一個(gè)是數(shù)組,則該標(biāo)量與數(shù)組的每一個(gè)元素進(jìn)行運(yùn)算.MATLAB數(shù)組運(yùn)算有算術(shù)運(yùn)算、賦值運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算、位運(yùn)算、集合運(yùn)算及數(shù)學(xué)函數(shù)運(yùn)算等.2.5數(shù)組運(yùn)算2.5.1算術(shù)運(yùn)算數(shù)組算術(shù)運(yùn)算有加(+)、減(?)、乘(.*)、除(./)、左除(.\)及乘方(.^),其基本運(yùn)算規(guī)則是對(duì)數(shù)組中的元素作相應(yīng)的算術(shù)運(yùn)算.語法規(guī)則如下:加法:A+B減法:A?B乘法:A.*B除法:A./B左除法A.\B乘方:A.^n2.5數(shù)組運(yùn)算2.5.2賦值運(yùn)算MATLAB可以對(duì)數(shù)組整體賦值,也可以對(duì)數(shù)組局部賦值,還可以利用賦值運(yùn)算符實(shí)現(xiàn)一些特殊的操作.A=rand(3)%生成3×3隨機(jī)數(shù)組,并賦值給AA=0.01800.56530.03230.81660.47670.68750.33450.76000.9762A(1,:)=rand(1,3)%生成1×3隨機(jī)數(shù)組,并賦值給A的第一行A=0.50450.73680.53520.81660.47670.68750.33450.76000.97622.5數(shù)組運(yùn)算2.5.2賦值運(yùn)算A([1,2],:)=A([2,1],:)%交換A的第1行和第2行A=0.81660.47670.68750.50450.73680.53520.33450.76000.9762A(:,2)=[]

%刪除A的第2列A=0.81660.68750.50450.53520.33450.97622.5數(shù)組運(yùn)算2.5.3關(guān)系運(yùn)算關(guān)系運(yùn)算符有6個(gè):<

<=

>

>=

==

~=用于比較兩個(gè)數(shù)的大小關(guān)系,運(yùn)算結(jié)果是邏輯值.如果運(yùn)算數(shù)中有一個(gè)是數(shù)組,則結(jié)果是一個(gè)同維的邏輯數(shù)組.2.5數(shù)組運(yùn)算2.5.3關(guān)系運(yùn)算A=rand(3)%生成3×3隨機(jī)數(shù)組A=0.37410.48440.08850.78910.06380.72790.17860.43220.1700B=rand(3)B=0.90450.78930.73340.29890.05880.36020.15890.48390.8257C=A>B%兩個(gè)同維數(shù)組進(jìn)行比較

C=000111100D=A>0.5%數(shù)組與標(biāo)量進(jìn)行比較D=0001010002.5數(shù)組運(yùn)算2.5.4邏輯運(yùn)算邏輯運(yùn)算要求運(yùn)算數(shù)是邏輯值,運(yùn)算結(jié)果也是邏輯值.如果運(yùn)算數(shù)不是邏輯值,則會(huì)自動(dòng)轉(zhuǎn)換成邏輯值再進(jìn)行運(yùn)算.邏輯運(yùn)算規(guī)則如表下:邏輯運(yùn)算有數(shù)組邏輯運(yùn)算和標(biāo)量邏輯運(yùn)算兩類.aba&ba|bxor(a,b)~a0000010101111111002.5數(shù)組運(yùn)算1.數(shù)組邏輯運(yùn)算數(shù)組邏輯運(yùn)算的運(yùn)算數(shù)是數(shù)組,如果其中一個(gè)數(shù)組,另一個(gè)是標(biāo)量,則數(shù)組中的每一個(gè)元素與標(biāo)量進(jìn)行邏輯運(yùn)算,結(jié)果是一個(gè)邏輯數(shù)組.邏輯與:A&B

邏輯或:A|B

邏輯異或:xor(A,B)邏輯非:~A2.5數(shù)組運(yùn)算1.數(shù)組邏輯運(yùn)算A=rand(1,4)<0.5%生成隨機(jī)0-1向量A=1100B=rand(1,4)<0.5%生成隨機(jī)0-1向量B=1010C=A&B%邏輯與運(yùn)算C=1000C=A|B%邏輯或運(yùn)算C=1110C=xor(A,B)%邏輯異或運(yùn)算C=0110~A%邏輯非運(yùn)算ans=

00112.5數(shù)組運(yùn)算2.標(biāo)量邏輯運(yùn)算標(biāo)量邏輯運(yùn)算的運(yùn)算數(shù)只能是標(biāo)量,運(yùn)算結(jié)果是邏輯型標(biāo)量.標(biāo)量邏輯運(yùn)算常用在if語句和while語句的條件表達(dá)式中.邏輯與:a&&b邏輯或:a||b值得注意的是標(biāo)量邏輯運(yùn)算具有“短路”特性.即當(dāng)a為false時(shí),a&&b的結(jié)果必然為false,在執(zhí)行過程中不再去計(jì)算b的值,直接給出結(jié)果;當(dāng)a為true時(shí),a||b的結(jié)果必然為true,在執(zhí)行過程中也不再去計(jì)算b的值,直接給出結(jié)果.2.5數(shù)組運(yùn)算2.標(biāo)量邏輯運(yùn)算x=-4;y=-3;z=-2;x<y&&y<zans=1x<y<z%注意與上面的結(jié)果不同ans=0x<y||a>0%當(dāng)x<y為真時(shí),||短路了,a>0不計(jì)算ans=1x<y|a>0%|不具備短路功能,計(jì)算a>0時(shí)因?yàn)閍未定義出現(xiàn)錯(cuò)誤未定義函數(shù)或變量'a'2.5數(shù)組運(yùn)算2.5.5位運(yùn)算位運(yùn)算是按二進(jìn)制位進(jìn)行的運(yùn)算,參與運(yùn)算的對(duì)象必須是相同類型的數(shù)組.有位與(bitand)、位或(bitor)、位異或(bitxor)、位反(bitcmp)、位移(bitshift)、位獲取(bitget)以及位設(shè)置(bitset)等運(yùn)算.2.5數(shù)組運(yùn)算1.位與bitand(a,b)返回a和b對(duì)應(yīng)元素按位與的結(jié)果.例如bitand(int8(2),int8(7))(00000010)2(00000111)22(00000010)22.5數(shù)組運(yùn)算2.位或bitor(a,b)返回a和b對(duì)應(yīng)元素按位或的結(jié)果.例如bitor(int8(2),int8(7))(00000010)2(00000111)27(00000111)22.5數(shù)組運(yùn)算3.位異或bitxor(a,b)

返回a和b對(duì)應(yīng)元素按位異或的結(jié)果.例如bitxor(int8(2),int8(7))(00000010)2(00000111)25(00000101)22.5數(shù)組運(yùn)算4.位反bitcmp(a)返回a元素按位取反的結(jié)果.例如bitcmp(int8(2))(00000010)2-3(11111101)22.5數(shù)組運(yùn)算5.位移bitshift(a,k)返回a元素按位左移k位的結(jié)果.例如bitshift(int8(2),2)(00000010)28(00001000)22.5數(shù)組運(yùn)算6.位獲取bitget(a,k)

返回a元素二進(jìn)制位的第k位的結(jié)果.例如bitget(int8(2),2)(00000010)2112.5數(shù)組運(yùn)算7.位設(shè)置bitset(a,k)

返回a元素將二進(jìn)制位的第k位設(shè)置為1的結(jié)果.例如bitset(int8(4),2)(00000100)26(00000110)22.5數(shù)組運(yùn)算2.5.6集合運(yùn)算在進(jìn)行集合運(yùn)算時(shí),MATLAB將數(shù)組作為集合來進(jìn)行運(yùn)算.集合運(yùn)算有集合并(union)、集合交(intersect)、集合差(setdiff)、集合異或(setxor)等運(yùn)算.2.5數(shù)組運(yùn)算1.集合并union(A,B)

返回集合A和B的并集,即A和B中所有元素去掉重復(fù)部分后的集合.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=union(A,B)C=1234562.5數(shù)組運(yùn)算2.集合交intersect(A,B)返回集合A和B的交集,即A與B中相同的元素.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=intersect(A,B)C=252.5數(shù)組運(yùn)算3.集合差setdiff(A,B)

返回集合A和B的差,即在A中但不在B中的元素.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=setdiff(A,B)C=162.5數(shù)組運(yùn)算4.集合異或setxor(A,B)

返回集合A和B中不相同的元素.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=setxor(A,B)C=13462.5數(shù)組運(yùn)算5.刪除重復(fù)元素unique(A)

返回集合A去掉重復(fù)元素后的集合,使每個(gè)元素都只有唯一一個(gè).A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=unique(A)C=12562.5數(shù)組運(yùn)算6.判斷是否屬于集合元素ismember(A,B)

對(duì)每一個(gè)A中的元素ai,檢測(cè)集合B是否包含ai,如果包含則返回true,否則返回false,結(jié)果是與A同維的邏輯數(shù)組.A=[1,1,2,2,5,5,5,6,6,6];B=[2,2,3,3,4,4,5,5];C=ismember(A,B)C=

00111110002.5數(shù)組運(yùn)算2.5.7數(shù)學(xué)函數(shù)MATLAB提供了大量的數(shù)學(xué)函數(shù),大大方便了科學(xué)工作者進(jìn)行各種數(shù)學(xué)運(yùn)算,包括三角雙曲函數(shù)、統(tǒng)計(jì)函數(shù)、指數(shù)對(duì)數(shù)函數(shù)、復(fù)數(shù)函數(shù)、取整求余函數(shù)等.值得注意的是,絕大多數(shù)的數(shù)學(xué)函數(shù)都支持將數(shù)組作為函數(shù)參數(shù)。當(dāng)參數(shù)為數(shù)組時(shí),函數(shù)將對(duì)數(shù)組中的每一個(gè)元素計(jì)算對(duì)應(yīng)的函數(shù)值,返回值是與參數(shù)同維的數(shù)組。2.5數(shù)組運(yùn)算1.三角函數(shù)和雙曲函數(shù)MATLAB的三角函數(shù)和雙曲函數(shù)比較豐富,其函數(shù)名見課本表2.3和表2.4。例2.2繪制y=sin(x),x∈[?π,π]函數(shù)圖像.x=-pi:0.1:pi;%從-pi到pi,以0.1為步長(zhǎng)進(jìn)行取點(diǎn),得到一個(gè)向量y=sin(x);%對(duì)x中的每一個(gè)數(shù)計(jì)算對(duì)應(yīng)的sin函數(shù)值plot(x,y);%以x和y為坐標(biāo)點(diǎn)繪圖2.5數(shù)組運(yùn)算2.統(tǒng)計(jì)函數(shù)MATLAB包含了大量的統(tǒng)計(jì)函數(shù),常用統(tǒng)計(jì)函數(shù)如下:函數(shù)名說明函數(shù)名說明sum求和cumsum累加prod求積cumprod累積diff差分gradient梯度max最大值min最小值mean平均值median中位數(shù)var方差std標(biāo)準(zhǔn)差cov協(xié)方差corrcoef相關(guān)系數(shù)sort排序

2.5數(shù)組運(yùn)算A=rand(3)A=0.22900.44290.10320.01050.89500.18780.68780.80210.7388V=sum(A)%將矩陣A的元素按列求和,結(jié)果為一個(gè)行向量V=0.92742.14001.0298V=sum(A,2)%將矩陣A的元素按行求和,結(jié)果為一個(gè)列向量V=0.77521.09332.2287x=sum(A(:))%求數(shù)組A的所有元素之和x=4.09722.5數(shù)組運(yùn)算V=rand(1,6)

%生成隨機(jī)向量V=0.27050.56240.25410.55270.56280.4551U=diff(V)%差分,即后項(xiàng)減前項(xiàng)U=0.2920-0.30830.29850.0101-0.1077[c,k]=min(V)%求向量V的最小值及其位置c=0.2541k=3[c,k]=max(V)%求向量V的最大值及其位置c=0.5628k=5[U,K]=sort(V)%將向量V從小到大進(jìn)行排序,并給出排序前各元素的位置U=0.25410.27050.45510.55270.56240.5628K=3164252.5數(shù)組運(yùn)算3.指數(shù)對(duì)數(shù)函數(shù)MATLAB提供了一些指數(shù)函數(shù)和對(duì)數(shù)函數(shù):函數(shù)名說明函數(shù)名說明sqrt平方根pow2以2為底的指數(shù)exp以e為底的指數(shù)log自然對(duì)數(shù)log2以2為底的對(duì)數(shù)log10常用對(duì)數(shù)2.5數(shù)組運(yùn)算4.復(fù)數(shù)函數(shù)MATLAB大多數(shù)的數(shù)學(xué)函數(shù)也都可以對(duì)復(fù)數(shù)進(jìn)行運(yùn)算,這里所說的復(fù)數(shù)函數(shù)是專門用于對(duì)復(fù)數(shù)進(jìn)行一些操作的函數(shù).函數(shù)名說明函數(shù)名說明complex構(gòu)造復(fù)數(shù)isreal判斷是否為實(shí)矩陣real復(fù)數(shù)的實(shí)部imag復(fù)數(shù)的虛部abs復(fù)數(shù)的?;?qū)崝?shù)絕對(duì)值conj共軛復(fù)數(shù)angle復(fù)數(shù)的相角

2.5數(shù)組運(yùn)算示例:A=[1+2i,4-2i,1-6i,4i]%定義復(fù)數(shù)向量A=1.0000+2.0000i4.0000-2.0000i1.0000-6.0000i0.0000+4.0000iX=real(A)%取復(fù)數(shù)向量A的實(shí)部X=1410Y=imag(A)%取復(fù)數(shù)向量A的虛部Y=2-2-64abs(A)%計(jì)算復(fù)數(shù)向量A的模ans=2.23614.47216.08284.00002.5數(shù)組運(yùn)算5.取整求余函數(shù)MATLAB有多種取整和求余函數(shù),如下表所示:mod和rem都可用于求余,當(dāng)x和y的正負(fù)號(hào)一樣的時(shí)候,mod(x,y)和rem(x,y)兩個(gè)函數(shù)結(jié)果是等同的;當(dāng)x和y的符號(hào)不同時(shí),rem(x,y)函數(shù)結(jié)果的符號(hào)和x的相同,而mod(x,y)和y相同.函數(shù)名說明函數(shù)名說明floor向下取整ceil向上取整round四舍五入取整fix零方向取整mod求余數(shù)rem求余數(shù)sign符號(hào)函數(shù)

2.6矩陣運(yùn)算矩陣運(yùn)算是針對(duì)矩陣整體的數(shù)學(xué)運(yùn)算,包括算術(shù)運(yùn)算、矩陣分析、線性方程組、矩陣分解以及矩陣函數(shù)運(yùn)算.2.6.1矩陣算術(shù)運(yùn)算矩陣加法:A+B

矩陣減法:A?B矩陣乘法:A*B

矩陣乘方:A^n,計(jì)算A的n次方,n是標(biāo)量矩陣(右)除法:A/B,計(jì)算AB?1

矩陣左除法:A\B,計(jì)算A?1B2.6矩陣運(yùn)算示例:A=[121;314;250];B=[101;010;110];C=A*B%矩陣相乘C=231753252C=A/B%AB-1C=12042-1032C=A*inv(B)%AB-1C=12042-10322.6矩陣運(yùn)算示例:C=A*B^(-1)

%AB-1C=12042-1032C=A\B%A-1BC=

-1.44441.3333-2.22220.7778-0.33330.88890.8889-0.66671.4444C=inv(A)*B

%A-1BC=-1.44441.3333-2.22220.7778-0.33330.88890.8889-0.66671.44442.6矩陣運(yùn)算2.6.2矩陣的初等變換利用矩陣的算術(shù)運(yùn)算可以實(shí)現(xiàn)矩陣的初等變換.(1)交換兩行:A([i,j],:)=A([j,i],:);(2)某一行乘以一個(gè)常數(shù):A(i,:)=c*A(i,:);(3)某一行乘以一個(gè)常數(shù)加到另一行:A(j,:)=c*A(i,:)+A(j,:).2.6矩陣運(yùn)算示例:A=rand(3)A=0.60650.09870.19180.08160.72040.64820.72860.91390.4076A([1,2],:)=A([2,1],:)%交換兩行A=0.08160.72040.64820.60650.09870.19180.72860.91390.4076A(2,:)=2*A(2,:)%第2行乘以2A=0.08160.72040.64821.21290.19740.38350.72860.91390.4076A(3,:)=3*A(2,:)+A(3,:)%第2行乘以3加到第3行A=0.08160.72040.64821.21290.19740.38354.36741.50611.55822.6矩陣運(yùn)算2.6.3 矩陣分析矩陣分析主要是計(jì)算矩陣的各項(xiàng)特征屬性,在矩陣論、線性代數(shù)中有重要應(yīng)用.1-范數(shù):norm(A,1)2-范數(shù):norm(A)或norm(A,2)無窮范數(shù):norm(A,Inf)p-范數(shù):norm(A,p)2.6矩陣運(yùn)算2.6.3 矩陣分析矩陣的秩:rank(A)行列式的值:det(A)矩陣的逆:inv(A)矩陣的偽逆:pinv(A)矩陣的跡:trace(A)矩陣的簡(jiǎn)化梯形形式:rref(A)矩陣的條件數(shù):cond(A)矩陣的特征值和特征向量:[V,D]=eig(A)2.6矩陣運(yùn)算A=[213;021;142];rank(A)%矩陣的軼ans=3det(A)%行列式的值ans=

-5B=inv(A)%逆矩陣B=0-2.00001.0000-0.2000-0.20000.40000.40001.4000-0.8000A*Bans=1.0000-0.00000.000001.00000001.0000C=pinv(A)%偽逆

-0.0000-2.00001.0000-0.2000-0.20000.4000

0.40001.4000-0.8000trace(A)

%矩陣的跡ans=6示例:2.6矩陣運(yùn)算rref(A)%簡(jiǎn)化的行梯形形式ans=100010001cond(A)

%條件數(shù)ans=

16.3203[V,D]=eig(A)%特征值和特征向量V=0.6874-0.9693-0.75860.26330.2436-0.2252-0.6769-0.0349-0.6114D=-0.57120001.85670004.7145示例:2.6矩陣運(yùn)算2.6.4線性方程組MATLAB求解線性方程組總體上分為直接法和間接法兩類.直接法通過求線性方程組的系數(shù)矩陣的逆來求解方程,而間接法則是通過構(gòu)造迭代公式,通過迭代法逐步逼近解.2.6矩陣運(yùn)算1.直接法設(shè)有兩個(gè)矩陣A和B,求解X使得AX=B.若A可逆,則下面方法都可以求解:X=A\BX=A^(-1)*BX=inv(A)*BX=linsolve(A,B)2.6矩陣運(yùn)算A=[326;157;812];%系數(shù)矩陣B=[1;5;3];%右邊項(xiàng)X=A\B;X=A^(-1)*B;X=inv(A)*B;X=linsolve(A,B)X=0.29911.7179-0.5556A*X%驗(yàn)證ans=1.00005.00003.0000示例:2.6矩陣運(yùn)算1.直接法如果A不是方陣,或是奇異的方陣,則下面的方法可以求AX=B的一個(gè)解或最小二乘意義下的最優(yōu)解.X=A\BX=(A'*A)^(-1)*(A'*B)X=pinv(A)*BX=linsolve(A,B)2.6矩陣運(yùn)算A=[1-11;001;111;421;931];%系數(shù)矩陣B=[9.0888;3.8853;2.8931;5.9191;12.7056];%右邊項(xiàng)C=A\B;%求最小二乘意義解C=(A'*A)^(-1)*(A'*B);C=pinv(A)*B;C=linsolve(A,B)C=1.9999-3.0730

3.9718norm(A*C-B)

%誤差ans=0.1428示例:2.6矩陣運(yùn)算

說明注釋pcg(預(yù)條件共軛梯度法)系數(shù)矩陣必須是對(duì)稱正定矩陣.由于只需要存儲(chǔ)有限數(shù)量的向量,因此是最有效的對(duì)稱正定方程組求解器.lsqr(最小二乘法)可用于求解超定線性方程組.在解析上等效于應(yīng)用于標(biāo)準(zhǔn)方程(ATA)x=ATb的共軛梯度法.minres(最小殘差法)系數(shù)矩陣必須是對(duì)稱矩陣,但無需是正定矩陣.每次迭代都會(huì)最小化2-范數(shù)中的殘差,從而保證算法能夠逐步取得進(jìn)展.symmlq(對(duì)稱LQ)系數(shù)矩陣必須是對(duì)稱矩陣,但無需是正定矩陣.求解投影方程組,并使殘差與所有先前的殘差正交.bicg(雙共軛梯度法)bicg的計(jì)算成本低,但收斂不規(guī)則而且不可靠.bicg具有很重要的歷史地位,因?yàn)楹芏嗟惴ǘ际腔谒倪M(jìn)而來.bicgstab(雙共軛梯度穩(wěn)定法)系數(shù)矩陣必須是方陣.交替使用BiCG步驟與GMRES(1)步驟,以提高穩(wěn)定性.bicgstabl(雙共軛梯度穩(wěn)定法-l)系數(shù)矩陣必須是方陣.交替使用BiCG步驟與GMRES(2)步驟,以提高穩(wěn)定性.cgs(共軛梯度二乘法)系數(shù)矩陣必須是方陣.需要與bicg相同的每次迭代操作數(shù),但要避免通過操作平方殘差來使用轉(zhuǎn)置.gmres(廣義最小殘差法)最可靠的算法之一,因?yàn)槊看蔚寄茏钚』瘹埐罘稊?shù).工作量和所需的存儲(chǔ)量隨迭代次數(shù)線性增加.qmr(擬最小殘差法)系數(shù)矩陣必須是方陣.每次迭代的開銷略高于bicg,但提供了更好的穩(wěn)定性.tfqmr(無轉(zhuǎn)置擬最小殘差法)系數(shù)矩陣必須是方陣.當(dāng)內(nèi)存有限時(shí),是嘗試用于求解對(duì)稱不定方程組的最佳求解器.2.6矩陣運(yùn)算A=[1-11;001;111;421;931];%系數(shù)矩陣B=[9.0888;3.8853;2.8931;5.9191;12.7056];%右邊項(xiàng)C=lsqr(A,B)

%使用迭代法求最小二乘解C=1.9999-3.0730

3.9718x=[-10123];y=B;xx=linspace(-1,3);yy=polyval(C,xx);

%計(jì)算多項(xiàng)式的值plot(x,y,'o',xx,yy);

%作圖示例:2.6矩陣運(yùn)算2.6.5 矩陣分解矩陣分解是把一個(gè)矩陣分解成若干矩陣的乘積形式,利用矩陣分解可求解較大規(guī)模的線性方程組.1.LU分解[L,U]=lu(A)LU分解是將方陣A分解為A=LU,其中L是上三角矩陣,U是下三角矩陣.2.6矩陣運(yùn)算

2.6矩陣運(yùn)算A=[1-11;001;111];B=[9.0888;3.8853;2.8931];[L,U]=lu(A)L=100001110U=1-11020001X=U\(L\B)%求解線性方法組AX=BX

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論