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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab 程序设计

發布時間:2024/1/23 循环神经网络 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab 程序设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、M文件

??用Matlab 語言編寫的程序,稱為M文件,后綴名為 .M。實質上M文件也就是一個文本文件,可以使用任何編輯程序來建立和編輯,默認使用Matlab提供的文本編輯器打開進行編輯。
??在進一步探討M文件之前,我們先回顧一下我們上一篇blogMatlab基礎知識中講解使用了那些類型的文件:

  • 內存變量文件 后綴名.mat
save filename [var_list] [-append][-ascii]; load filename [var_list] [-ascii];
  • 用 .M 文件 生成矩陣
mydata=[1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9; 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9; 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9];
  • 用.dat文件生成矩陣
2 4 6 8 6 ;3 5 6 7 3 ;2 5 1 2 5 load test.dat

??也就是說我們已經用過 .M文件了,而且上一次我們存的是數據 mydata。這就要引出我們下面要說的了: M文件的分類
??M文件分為兩類:

  • 命令文 件(Script File)
  • 函數文件(Function File)
    主要區別如下:
    (1)命令文件沒有輸入參數,也不返回輸出參數, 而函數文件可以帶輸入參數,也可返回輸出參數。
    (2)命令文件對MATLAB工作空間中的變量進行 操作,文件中所有命令的執行結果也完全返回到工作空間中,而函數文件中定義的變量為局部變量, 當函數文件執行完畢時,這些變量被清除。
    (3)命令文件可以直接運行,在MATLAB命令窗口輸入命令文件的名字,就會順序執行命令文件中的命令,而函數文件不能直接運行,而要以函數調用的方式來調用它。
// 命令文件 clear; R=[1,2,3;4,5,6]; M=[11,12,13;14,15,16]; RM=R+i*M // 函數文件 function RM=fsetcomp(R,M) RM=R+i*M;

PS:如果你理解了他們之間的區別,那么你現在應該清楚的知道我們在上一篇文章中使用的.M文件屬于 命令文件。

下面就來詳細講講函數文件
??函數文件是另一種形式的M文件,每一個函 數文件都定義一個函數。 事實上,MATLAB提供的標準函數大部分 都是由函數文件定義的。基本結構如下:

function 輸出形參表=函數名(輸入形參表) 注釋說明部分 函數體語句

說明:
??以function開頭的一行為引導行,表示該M 文件是一個函數文件。函數名的命名規則與變量名相同。輸入形參為函數的輸入參數,輸出形參為函 數的輸出參數。當輸出形參多于一個時,則應該用方括號括起來。 函數文件名通常由函數名再加上擴展名.m組成,不過函數文件名與函數名也可以不相同。當兩者不同時,MATLAB將忽略函數名而確認函數文件名,因此,調用時使用函數文件名。
??注釋非常極其重要,不寫注釋的代碼我基本是不愿意看的。標準注釋說明包括如下3部分內容:

  • 緊隨函數文件引導行之后以%開頭的第一注釋行。 這一行一般包括大寫的函數文件名和函數功能簡要 描述,供lookfor關鍵詞查詢和help在線幫助用
  • 第一注釋行及之后連續的注釋行。通常包括函數 輸入輸出參數的含義及調用格式說明等信息,構成 全部在線幫助文本
  • 與在線幫助文本相隔一空行的注釋行。包括函數 文件編寫和修改的信息,如作者、修改日期、版本 等內容,用于軟件檔案管理。
// 函數調用格式[nargout]=func(nargin)

??MATLAB在函數調用上有一個與一般高級語言不同之處,就是函數所傳遞參數數目的可調性。 在調用函數時,MATLAB用兩個永久變量nargin 和nargout分別記錄調用該函數時的輸入實參和輸出 實參的個數。只要在函數文件中包含這兩個變量, 就可以準確地知道該函數文件被調用時的輸入/輸出 參數個數,從而決定函數如何進行處理。

再提一個小點,如果在函數中想使用全局變量,用global var_name

2、程序控制結構

??程序控制結構對學過C++,學過Java的同學來說肯定是 a piece of cake ,這里簡單的說一下Matlab的程序控制結構。

  • 順序結構
// 數據輸入 A=input(tips_info,option); // 數據輸出 disp(str|matrix) //暫停 pause(secs)
  • 選擇結構
if condition block1 elseif conditionblock2 else block3 end switch 表達式 case 結果表1 語句塊1 case 結果表2 語句塊2 …… case 結果表n otherwise 語句塊n+1 end

??switch子句后面的表達式應為一個標量 或一個字符串,case子句后面的結果不僅可以為一個標量或一個字符串,而且還可以為 一個將多個結果用大括號括起來的單元數據 (Cell)。如果case子句后面的結果為一個 單元數據,則表達式的值等于該單元數據中 的某個元素時,執行相應的語句組。

try 語句塊1 catch 語句塊2 end

??try語句先試探性執行語句塊1,如果語句塊1在執行 過程中出現錯誤,則將錯誤信息賦給保留的lasterr 變量,并轉去執行語句塊2。

  • 循環結構
for 循環變量=表達式1:表達式2:表達式3 循環體語句 end // 例如,求1-100的和 // 特別說明malab和python切片操作是有區別的,如果你同時使用python //和matlab,甚至還有R語言,一定要注意它們之間的細微差別sum=0; for m=1:100sum=sum+m; end sum

劃重點

//執行過程是依次將矩陣的各列元素賦給循環變 量,然后執行循環體語句,直至各列元素處理完畢 for 循環變量=矩陣表達式 循環體語句 end while(條件) 循環體語句 End

??最后提一下兩個循環的老朋友,break和continue:break語句用于終止循環的執行。當在循環 體內執行到該語句時,程序將跳出循環,繼 續執行循環語句的下一語句。continue語句控制跳過循環體中的某些語 句。當在循環體內執行到該語句時,程序將 跳過循環體中所有剩下的語句,繼續下一次循環。

程序性能分析與優化

??這是程序設計中個非常重要的一步,這就好比漂亮的車子有很多,但是錢不夠一切都是然并卵;而對于程序他需要考慮的是對資源的占用、時間的消耗。一個好的程序能夠在占用最少資源的情況好快速高效的完成規定業務。
??在matlib中,Profiler性能評估器、tic函數和toc函數能分析程序各環節的耗時情況,分析報告能幫助用戶尋 找影響程序運行速度的“瓶頸”所在,以便于進行程序優化。例如,通過函數文件性能評估器(Profiler)用戶可以很 方便地了解程序執行過程中各函數及函數中的每條 語句所耗費的時間,從而有針對性地改進程序,提 高程序的運行效率。

matlab 程序優化常見思路

  • 向量化
    ??這是一個非常重要的編程思想,因為GPU和CPU都含有并行化指令或者稱之為SIMD(single instruction multiple data)指令。向量化能夠充分利用并行化從而更加快速的計算,這點在GPU和CPU上面都是成立的,GPU更加擅長SIMD計算但是CPU實際上也不差,只是沒有GPU擅長而已。

  • 預分配內存空間
    ??通過在循環之前預分配向量或數組的內存空間可以提高for循環的處理速度。

  • 減小運算強度
    ??采用運算量更小的表達式,一般來說,乘法比乘方運算快,加法比乘法運算快,位運算比求余運算快。

總結

以上是生活随笔為你收集整理的matlab 程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。