日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 循环神经网络 >内容正文

循环神经网络

如何阅读matlab项目并调试运行成,【转】读书笔记:MATLAB

發(fā)布時(shí)間:2023/12/20 循环神经网络 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何阅读matlab项目并调试运行成,【转】读书笔记:MATLAB 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MATLAB(01)

今天開(kāi)始寫(xiě)讀書(shū)筆記,第一本書(shū)是《高等應(yīng)用數(shù)學(xué)問(wèn)題的MATLAB求解》。

MATLAB語(yǔ)言是科學(xué)研究者首選的計(jì)算機(jī)數(shù)學(xué)語(yǔ)言。大多數(shù)學(xué)生缺乏對(duì)應(yīng)用數(shù)學(xué)問(wèn)題的全面了解,不清楚什么問(wèn)題能用數(shù)學(xué)描述,什么樣的數(shù)學(xué)問(wèn)題能求解,以至于走了很多彎路。通過(guò)學(xué)習(xí)MATLAB語(yǔ)言可以使數(shù)學(xué)問(wèn)題求解能力顯著提高,即使對(duì)某些數(shù)學(xué)公式理解不夠深刻,只要學(xué)習(xí)了MATLAB語(yǔ)言也能容易地求解類(lèi)似問(wèn)題,畢竟科學(xué)研究者和工程技術(shù)人員通常不考慮為什么這樣做,而只考慮結(jié)果是什么。借助MATLAB數(shù)學(xué)基礎(chǔ)不深厚的人同樣能輕易利用計(jì)算機(jī)解決高深的應(yīng)用數(shù)學(xué)問(wèn)題。

第1章 計(jì)算機(jī)數(shù)學(xué)語(yǔ)言概述

1.1為什么學(xué)習(xí)計(jì)算機(jī)數(shù)學(xué)語(yǔ)言

并不是所有數(shù)學(xué)問(wèn)題都能手工推導(dǎo)的,手工推導(dǎo)有時(shí)是不易、不可靠、不精確甚至是不可能的,所以需要計(jì)算機(jī)的幫助。用計(jì)算機(jī)的方式有兩種,其一是數(shù)值分析,其二是計(jì)算機(jī)語(yǔ)言,前者只能解數(shù)值計(jì)算問(wèn)題,后者還可以解決像公式推導(dǎo)這樣的問(wèn)題。

許多專(zhuān)門(mén)的學(xué)科在介紹原理與方法時(shí)一般采用簡(jiǎn)單的例子,回避高階和復(fù)雜的例子,這樣得到的方法和結(jié)論只是理論上的,用于解決現(xiàn)實(shí)的實(shí)際問(wèn)題往往是比較困難的,所以需要借助計(jì)算機(jī)數(shù)學(xué)語(yǔ)言。

1.2 數(shù)學(xué)問(wèn)題的解析解與數(shù)值解

數(shù)學(xué)家往往關(guān)注解析解以及解的存在性的嚴(yán)格證明,而工程技術(shù)人員通常只關(guān)心最后的數(shù)值解。數(shù)學(xué)上,解析解不存在的情況很普遍,例如圓周率就沒(méi)有解析解,工程技術(shù)人員也不關(guān)心圓周率是怎么求得的,只是想知道能滿(mǎn)足精度要求的數(shù)值,一般的計(jì)算取3.1416即可,粗略的計(jì)算取3.14也未嘗不可。

第2章 MATLAB語(yǔ)言程序設(shè)計(jì)基礎(chǔ)

MATLAB的主要特點(diǎn):

簡(jiǎn)介高效 一條語(yǔ)句頂C/C++數(shù)百條

科學(xué)運(yùn)算能力強(qiáng)大 MATLAB以矩陣為基本單元

繪圖功能 論文中必須給出二維或三維圖形

工具箱 為各專(zhuān)業(yè)量身定制

動(dòng)態(tài)系統(tǒng)仿真 轉(zhuǎn)用ANSYS等專(zhuān)業(yè)軟件

2.1 MATLAB程序設(shè)計(jì)語(yǔ)言基礎(chǔ)

2.1.1 MATLAB語(yǔ)言的變量和常量

變量必須由字母打頭,且區(qū)分大小寫(xiě)。

MATLAB保留的變量:

eps——浮點(diǎn)運(yùn)算誤差限,默認(rèn)2.2201e-16,若某個(gè)值小于eps則會(huì)被視為0

i,j——循環(huán)變量,用于純虛數(shù)量,應(yīng)恢復(fù)i=sqrt(-1)

inf——無(wú)窮大,-inf為無(wú)窮小,若除數(shù)為0,MATLAB也不會(huì)中止運(yùn)算,而是給出一個(gè)“除0”警告,并將結(jié)果賦成inf

NaN——not a number不定式,用于0/0,inf/inf運(yùn)算

lasterr、lastwarn、pi

2.1.2 數(shù)據(jù)結(jié)構(gòu)

數(shù)值型數(shù)據(jù):一般為double(),在圖形處理等計(jì)算中通常使用uint8()uint16()int8()int32()等,u表示無(wú)正負(fù)號(hào),數(shù)字表示位數(shù)。

符號(hào)型數(shù)據(jù):用于推導(dǎo)公式和解析解法,使用前首先需要將采用的變量申明為符號(hào)變量

syms list props,例如syms a b,props可以是real,positive等。

變精度算法函數(shù)vpa()可以將符號(hào)型數(shù)值以任意精度顯示出來(lái),vpa(pi)將顯示圓周率的32位有效數(shù)字,

vpa(pi,100)將顯示圓周率的100位有效數(shù)字,pi也可以換成矩陣。

其他數(shù)據(jù)結(jié)構(gòu):字符串型數(shù)據(jù)、多位數(shù)組、單元數(shù)組、類(lèi)于對(duì)象。

2.1.3 MATLAB的基本語(yǔ)句結(jié)構(gòu)

分兩種:直接賦值語(yǔ)句、函數(shù)調(diào)用語(yǔ)句

直接賦值語(yǔ)句:

末尾帶分號(hào)則不會(huì)顯示運(yùn)算結(jié)果,不帶則直接顯示

如果沒(méi)有指定變量,則結(jié)果賦予保留變量ans

注釋以%打頭

矩陣輸入:A=[1,2,3;4 5,6;7 8 9]

函數(shù)調(diào)用語(yǔ)句:[返回變量列表]=函數(shù)名(輸入變量列表)

一個(gè)函數(shù)名對(duì)應(yīng)一個(gè).m文件或MATLAB內(nèi)部函數(shù)。

[]可以用逗號(hào)和空格分隔[U,S,V],(X,Y,Z)只能用逗號(hào)分隔,為了避免混亂以后所有分隔用逗號(hào)完成。

2.1.4 冒號(hào)表達(dá)式與子矩陣提取

v1=1:0.2:pi

向量v1=1 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0

v2=1:pi

v2=1 2 3

v3=pi:-1:1

v3=3.1416 2.1416 1.1416

v4=1:-1:pi

Empty matrix

提取子矩陣:

:表示整行或整列

end表示最后一行或一列

B1=A(1:2:end,[2,3,4]) %奇數(shù)行234列

B2=A([1,2,3],[2,3,4]) 3行234列

B1=A(end:-1:1,:) %上下翻轉(zhuǎn),最后一行排在第一行,列排序不變

2.2 基本數(shù)學(xué)運(yùn)算

2.2.1 矩陣的代數(shù)運(yùn)算

矩陣轉(zhuǎn)置:如果矩陣元素含有復(fù)數(shù)元素,則轉(zhuǎn)置后取其共軛復(fù)數(shù)值,稱(chēng)為Hermit轉(zhuǎn)置,記為B=A*,MATLAB中用A’表示。而矩陣的一般轉(zhuǎn)置用A.’表示。

加減法運(yùn)算:A和B的維數(shù)若相同,則相應(yīng)元素相加減;若二者之一為標(biāo)量,則遍加減于每個(gè)元素;否則報(bào)錯(cuò)。

矩陣乘法:C=A*B,并不需要指定二者的維數(shù),若不相容則報(bào)錯(cuò)

矩陣的左除:A\B表示A-1B

矩陣的右除:B/A表示B A-1

矩陣翻轉(zhuǎn):fliplr(A)左右翻轉(zhuǎn),flipud(A)上下翻轉(zhuǎn),rot90(A)逆時(shí)針?lè)D(zhuǎn)90度

矩陣乘方運(yùn)算:只有方陣可進(jìn)行乘方運(yùn)算,B=A^x

點(diǎn)運(yùn)算:這是一種特殊且非常重要的運(yùn)算,即對(duì)應(yīng)元素的直接運(yùn)算,這要求二者維數(shù)相同。A.*B、A.^x、A.^A

2.2.2 矩陣的邏輯運(yùn)算

邏輯運(yùn)算的結(jié)果是一個(gè)矩陣,矩陣的元素非0即1。

與運(yùn)算:C=A&B,只有當(dāng)AB所有元素非0,C才為1,否則C取0

或運(yùn)算:C=A|B,只有當(dāng)AB所有元素為0,C才為0,否則C取1

非運(yùn)算:C=~A,只有當(dāng)A元素為0,C為1,否則C取0

異或運(yùn)算:C=xor(A,B),只有當(dāng)AB元素一個(gè)非0,一個(gè)為0,C才為1,否則取0,即只有二者邏輯結(jié)果不同才可取1,若相同則取0

2.2.3 矩陣的比較運(yùn)算

一般比較運(yùn)算的結(jié)果是一個(gè)矩陣,矩陣的元素非0即1。

C=A>B僅當(dāng)A的元素大于B的對(duì)應(yīng)元素C才取1,否則C取0.

類(lèi)似的還有< 、>=、<

=、==、~=等

find()、all()、any()函數(shù)

find()函數(shù)用于從矩陣中提取滿(mǎn)足條件的元素的下標(biāo),下標(biāo)的表示方式有兩種:

第一種,依次將矩陣的第一列、第二列???排列成一個(gè)列向量,輸出結(jié)果為這個(gè)列向量的下標(biāo),例如A=[1,2,3;4,5,6;7,8,9]變形為列向量就是A1={1,4,7,2,5,8,3,7,9},find(A>=5)’的結(jié)果是3

5 6 8 9即A1列向量中的這些下標(biāo)的元素滿(mǎn)足大于等于5的篩選條件。

第二種,更為直觀(guān)地輸出行列下標(biāo),[i,j]=find(B>4);[i,j]的輸出結(jié)果為

ans =

3 1

2 2

3 2

2 3

3 3

左側(cè)為行標(biāo),右側(cè)為列標(biāo)

all()、any()函數(shù)返回的都是一個(gè)行向量,元素的數(shù)量跟A矩陣的列數(shù)相等,每個(gè)元素非0即1。

all(A>4)返回的行向量表示A矩陣中哪一列的所有元素都大于4

any(A>4)返回的行向量表示A矩陣中哪一列中存在至少一個(gè)元素大于4

2.2.4 解析結(jié)果的化簡(jiǎn)和變換

變量s用于表示解析式之前必須首先聲明符號(hào)變量syms s

s1=simple(s)自動(dòng)選擇最簡(jiǎn)格式進(jìn)行化簡(jiǎn)

[s1,var1]=simple(s),字符串變量var1輸出自動(dòng)選擇的化簡(jiǎn)方法的名稱(chēng)

常用的化簡(jiǎn)方法有:

collect()合并同類(lèi)項(xiàng)

expand()展開(kāi)多項(xiàng)式

factor()因式分解

numden()提取多項(xiàng)式的分子和分母

sincos()三角函數(shù)化簡(jiǎn)

subs()用于變量替換

>> syms a b c x m p q

>> f=a*x^2+b*x+c;

>> g=subs(f,a,m)

g =m*x^2 + b*x + c

>> h=subs(g,{b,c},{p,q})

h =m*x^2 + p*x + q

2.2.5 基本數(shù)論運(yùn)算

floor()向負(fù)無(wú)窮方向取整

ceil()向正無(wú)窮方向取整

round就近取整

fix趨零取整

[n,m]=rat(A)將A中所有元素變換成最簡(jiǎn)有理數(shù),分子存儲(chǔ)在矩陣n中,分母m中

rem(A,B)A中元素對(duì)B中元素求模得出的余數(shù)

gcd(n,m) 最大公約數(shù)

lcm(n,m)最小公倍數(shù)

factor質(zhì)因數(shù)分解

isprime是否為質(zhì)數(shù),以0/1表示

A=1:100;B=A(isprime(A))

2.3 流程結(jié)構(gòu)

;表示當(dāng)前代碼未結(jié)束輸入,但是需要換行,所以并不會(huì)立刻執(zhí)行計(jì)算;有時(shí)一行代碼中間也使用;表示在一行中書(shū)寫(xiě)原本應(yīng)該多行書(shū)寫(xiě)的代碼。

for、while、if、switch case、try catch

如果能對(duì)整個(gè)矩陣進(jìn)行運(yùn)算時(shí),盡量不要采用循環(huán)結(jié)構(gòu)

s=0;

for i=1:100

s=s+1;

end

case{,,,}

try,A

catch,B

end

首先試探性地執(zhí)行A,如果沒(méi)有錯(cuò)誤則end,否則將錯(cuò)誤信息賦值給lasterr并中止A轉(zhuǎn)而執(zhí)行B。A通常是高效但不穩(wěn)定的算法,B通常是低效但穩(wěn)定的算法,B也可用于說(shuō)明A中的錯(cuò)誤原因

2.4 函數(shù)編寫(xiě)與調(diào)試

2.4.1 基本結(jié)構(gòu)

兩種源程序文件格式:M-文件、M-函數(shù)。常用后者。

保留變量nargin和nargout用于確定函數(shù)的輸入和輸出變量的個(gè)數(shù)。

[輸出變量列表]=函數(shù)名(輸入變量列表),均用逗號(hào)分隔。

help 函數(shù)名:顯示注釋語(yǔ)句內(nèi)容,但空格行下方的注釋不被顯示。

if abs(n-floor(n))>eps|n<0

error(‘n應(yīng)該是非負(fù)整數(shù)’);

上面的代碼涉及abs、floor、eps、error、|等符號(hào),用于判定是否為非負(fù)整數(shù)。

函數(shù)可以遞歸調(diào)用:

function srhf_fact(n)

if n>1

k=n*srhf_fact(n-1);

elseif any[0,1]==n

k=1

end

2.4.2 可變輸入輸出個(gè)數(shù)

如何建立起無(wú)限個(gè)輸入或輸出變量的函數(shù)?這種方式被廣泛采用。

conv(A,B)用于求多項(xiàng)式的乘積,多個(gè)多項(xiàng)式的乘積只能嵌套使用此函數(shù),即conv(C,

conv(A,B))。這樣很不方便,可以考慮編寫(xiě)一個(gè)新的函數(shù)convs,其輸入變量不限于2個(gè),而是無(wú)限個(gè),在MATLAB中“無(wú)限”并不是純粹數(shù)學(xué)上的無(wú)限,而是指輸入或輸出變量的個(gè)數(shù)不再于函數(shù)編寫(xiě)時(shí)加以限制,所以在函數(shù)中需要知道用戶(hù)在輸入變量列表中給出了幾個(gè)變量,這需要調(diào)用length函數(shù)。

函數(shù)輸入變量列表可以是一個(gè)變量(實(shí)際上是一個(gè)向量)

varargin,此變量是保留變量,它表示多個(gè)變量的集合,那么length(varargin)的輸出變量是一個(gè)正整數(shù),表示varargin中具體包含的變量數(shù)量。

function a=convs(varargin)

a=1;

varnum= length(varargin);

for i=1:varnum

a=conv(a,varargin{i});

end

end

2.4.3 inline函數(shù)與匿名函數(shù)

一個(gè)簡(jiǎn)單的函數(shù),沒(méi)有必要單獨(dú)創(chuàng)建一個(gè).m文件,只用一行代碼進(jìn)行描述即可。

function a=f(x,y)

a=sin(x.^2+y.^2)

end

上面的函數(shù)是在.m文件中的代碼,而有些情況下,如微分方程求解和最優(yōu)化問(wèn)題,這樣的函數(shù)可以采用inline函數(shù)的形式給出。

f=inline(‘sin(x.^2+y.^2)’,’x’,’y’)

以上兩種函數(shù)定義形式,無(wú)論采用哪種,都可以通過(guò)z=f(3,6)直接求出z=0.8509,顯然inline函數(shù)更為簡(jiǎn)便。

匿名函數(shù)跟inline函數(shù)類(lèi)似,區(qū)別有二:更簡(jiǎn)潔、可直接使用工作空間中的變量。

簡(jiǎn)潔體現(xiàn)在f=@(x,y) sin(x.^2+y.^2)

變量的優(yōu)勢(shì)十分明顯:一般函數(shù)中的變量,無(wú)論是輸入變量還是輸出變量只在函數(shù)內(nèi)部使用,跟工作空間中的變量是相對(duì)隔離的,工作變量作為輸入變量代入函數(shù),工作變量便替換函數(shù)變量進(jìn)行計(jì)算,最后函數(shù)將輸出變量的結(jié)果代入工作變量返回工作空間。這樣做雖然嚴(yán)謹(jǐn),有效避免了變量使用上的混亂,但有時(shí)不夠方便,匿名函數(shù)的引入,有效地將工作變量和函數(shù)變量結(jié)合起來(lái),使用上更為靈活,但有一點(diǎn)需要注意,匿名函數(shù)直接引用工作變量,只是引用當(dāng)時(shí)的工作變量的值,引用完成之后,如果工作變量的值發(fā)生變化,匿名函數(shù)所引用的工作變量值不會(huì)隨著變化,仍然是之前的值。

2.5 二維圖形繪制

2.5.1基本函數(shù):plot(t,y)

t1,t2,t3時(shí)刻的函數(shù)值分別是y(t1),y(t2),y(t3),將其輸入MATLAB就是兩個(gè)向量t=[t1,t2,t3],y=[

y(t1),y(t2),y(t3)

],這種曲線(xiàn)實(shí)際上是各個(gè)時(shí)刻對(duì)應(yīng)函數(shù)值之間的折線(xiàn),當(dāng)t向量足夠密集,看起來(lái)就是曲線(xiàn)了,所以在某些特殊區(qū)間(慢變化區(qū)間)可以取點(diǎn)較稀疏,以提高運(yùn)算速度,在另一些區(qū)間(快變化區(qū)間)則需要較密集,以得到這些特殊區(qū)間的較為準(zhǔn)確的圖形。

(1) t、y均為向量,如上,還有更為簡(jiǎn)單的形式plot([t1,t2,t3],[y1,y2,y3])

(2)

t為向量,y為矩陣。將y矩陣的每一行作為y向量與t共同繪制一條曲線(xiàn),曲線(xiàn)數(shù)量跟y矩陣行數(shù)相等,這要求y矩陣的列數(shù)跟t向量的元素個(gè)數(shù)相等。

(3) t、y均為矩陣。要求t、y矩陣行列數(shù)均相等,取t矩陣的一行與y矩陣的同一行組成向量對(duì)進(jìn)行繪制。

(4)

以上三種組合形式,如果不止一對(duì)t、y,而是多對(duì),那么不必多次使用plot函數(shù),可以這樣一次繪出所有的圖形plot(t1,y1,t2,y2,t3,y3)或plot(t1,y1,Option1,t2,y2,

Option2,t3,y3, Option3),Option的具體用法參見(jiàn)P30.

圖形的附屬命令:

grid on/off:打開(kāi)或關(guān)閉網(wǎng)格

hold on/off:保護(hù)當(dāng)前坐標(biāo),以后再用plot函數(shù)時(shí)新的曲線(xiàn)將疊印在現(xiàn)有坐標(biāo)系上

title():添加標(biāo)題

xlabel()和ylabel():給坐標(biāo)軸加標(biāo)注

(abs(x)>n):將此式與其他解析式點(diǎn)乘,當(dāng)x在(-n,n)區(qū)間以外此式取1,否則取0,這是分段函數(shù)在MATLAB中的表達(dá)方式。

所得圖形中有多個(gè)對(duì)象,如曲線(xiàn)、坐標(biāo)軸、圖形窗口等,每個(gè)對(duì)象都可以設(shè)置具體屬性,屬性也可以被讀取。

set(句柄,’屬性名1’,屬性值1,’屬性名2’,屬性值2…)

v=get(句柄,’屬性名1’)

屬性名必須加單引號(hào),屬性值不加。

2.5.2 特殊意義的圖形繪制函數(shù):參見(jiàn)P32.

2.5.3隱函數(shù)的繪制

隱函數(shù):f(x,y)=0

ezplot(‘f(x,y)’)或ezplot(‘f(x,y)’,[-m,n]) 僅在[-m,n]上繪制隱函數(shù)圖形

2.6 三維圖形繪制

2.6.1三維曲線(xiàn)繪制

plot3(x,y,z)或plot3(x1,y1,z1,選項(xiàng)1,…)

2.6.2 三維曲面繪制

已知z=f(x,y),先用meshgrid()繪制網(wǎng)格矩陣數(shù)據(jù)x,y,再基于此平面繪制三位曲面,mesh()網(wǎng)格圖,surf()表面圖,surfc()帶等高線(xiàn),surfl()帶光照,contour()等高線(xiàn),contour3()三維等高線(xiàn)。例:

[x,y]=meshgrid(0:10,-5:5) %在(x,y)平面上繪制一個(gè)正方形網(wǎng)格矩陣

z=x.^2+y.^2

surf(x,y,z)

axis(-31,31,0,62,0,1) %將所得圖形的立方體內(nèi)的部分放大,名為重設(shè)坐標(biāo)系,增大可讀性

shading faceted/interp/flat %修飾顯示形式,默認(rèn)第一個(gè)

set(gca,’xlim,[-5,5]) %將x軸限制在一個(gè)區(qū)間內(nèi)

2.6.3 三位圖形的視角

view(a,b),方位角a表示從-y軸向+x軸方向逆時(shí)向旋轉(zhuǎn)的角度,仰角b表示從xy平面向+z軸方向旋轉(zhuǎn)的角度,默認(rèn)情況下a=-37.5,b=30.

下圖是我用MATLAB繪制出的第一張圖,紀(jì)念一下。

z=x.^2+y.^2

總結(jié)

以上是生活随笔為你收集整理的如何阅读matlab项目并调试运行成,【转】读书笔记:MATLAB的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。