二.m函式檔案
三.函式控制代碼
首先,要了解指令碼檔案和函式檔案的區別,在matlab中編寫的程式檔案稱為m檔案,m檔案分為指令碼檔案和函式檔案倆種。
函式檔案:有輸入引數和輸出引數,由function引導,使用者可以自己建立函式、呼叫函式,就像matlab內嵌函式一樣使用,函式中的變數一般是區域性變數,也可以宣告全域性變數。函式是matlab的主流程式設計方式。
指令碼檔案和函式檔案的區別如圖:
指令碼檔案的建立方法就是,新建乙個指令碼,在裡面編寫程式就可以了。
函式檔案的建立也是類似的,首先建立乙個函式檔案,檔名要和函式名一致,然後在檔案中編寫函式,以function為引導,函式檔案中必須包括乙個主函式,也可以包含子函式、內嵌函式等等…這和c語言的函式有類似之處。
函式檔案以function為引導,表明這個檔案是乙個函式檔案,格式如下:
function [ 輸出形參 ] = 函式名[ 輸入形參 ]
%注釋內容
例如:
特別注意一點,函式檔名要和主函式的名字一致。
函式形參
函式檔案有輸入形參和輸出形參,在宣告函式的時候就確定了形參的個數,輸入形參以圓括號()表示,輸出形參以方括號表示(注:輸出形參為乙個的時候可以不用)。而且每個形參的位置都是對應的,當沒有輸入引數或者輸出引數時,就不用寫了,相當於c語言中的void。
另外呼叫函式的時候,有時需要傳入引數和傳出引數,引數的位置必須和形參的位置相對應,這點和c語言中的形參使用幾乎一樣。
注釋寫好函式後總要使用的嘛,函式檔案自己不可以直接執行,需要使用者呼叫才可以,使用者呼叫的時候格式如下:
[ 輸出實參 ] = 函式名( 輸入實參 )
注意這裡的引數就不同於上面宣告函式時的引數,宣告函式是形參,呼叫函式是實參,實參必須要有確定的值。還有,實參的個數和位置要和形參對應。
例如:
函式執行的時候會產生一些變數,我們知道,在命令列和指令碼檔案下產生的變數都是放在主變數工作區的,也就是全域性變數。
但是函式內部產生的是區域性變數,除非特殊說明為全域性變數,區域性變數會在函式呼叫完畢後隨函式的結束而清除,當然,也可以通過函式返回值來使變數傳出函式,從而儲存下來(或者宣告為全域性變數)。
宣告乙個變數為全域性變數時格式為:
global 變數1 變數2
注意:變數之間必須使用空格來隔開,不能用逗號!一般函式檔案中第乙個函式就是主函式,主函式的函式名也和函式檔名一致。呼叫乙個函式首先執行的就是主函式了,這一點和c語言中的main函式有相似之處。
對應主函式,在乙個函式檔案中也會有子函式,子函式可以被主函式呼叫、被子函式呼叫。子函式也由function來引導,子函式的呼叫和位置無關!
例如:
當使用者編寫了乙個函式的時候,要呼叫此函式時,需要嚴格按照規定給出函式呼叫的格式,還要寫正確函式名,但是有時候函式名字比較麻煩。而且,最重要的一點:matlab每次呼叫函式的時候都要從所有路徑中去尋找對應函式,這就導致程式執行較慢!!!
使用函式控制代碼可以解決這種問題,什麼是函式控制代碼呢?我們可以模擬pc中程式的快捷方式來理解,要啟動乙個程式,計算機就要從硬碟中找啟動程式(感覺有點像大海撈針)只不過計算機執行速度飛快,可以比較快找到,而快捷方式就相當於指定了程式的啟動位址,使計算機可以直接去啟動程式。
函式控制代碼也是,使用函式控制代碼呼叫函式的時候,速度就比直接呼叫函式快了,而且使用函式控制代碼還可以給函式控制代碼重新命名,對函式控制代碼的操作就相當於對函式的操作!
定義函式控制代碼的常用方式就是:
handle = @functionname
直接控制代碼名=@函式名 就可以,例如:
Matlab m指令碼檔案
m檔案matlab允許編寫兩種程式檔案 指令碼 指令碼檔案是以.m副檔名的程式檔案。在這些檔案中,可以編寫一系列要一起執行的命令。指令碼不接受輸入,不返回任何輸出。它們對工作空間中的資料進行操作。函式 函式檔案也是擴充套件名為.m的程式檔案。函式可以接受輸入和返回輸出。內部變數是函式的區域性變數。建...
MATLAB m 序列生成函式 相關函式
觀摩了 simon haykin communication systems 4th edition 第七章課後的 感覺有點謎人,做了注釋及部分修改。pn 序列生成函式function x pnseq p 根據多項式 p 生成 pn 序列的線性移位暫存器 n length p 1 不包括 0 次項 ...
對於MATLAB M檔案怎麼加密
假如我有乙個檔名為 fan.m的檔案,怎麼來對它進行加密呢?如我想讓這個檔案執行十次後,它就自動損壞!或者讓它儲存五天,它也自動損壞!兩種方法 一 生成p檔案 二 生成.exe檔案,拿剛做好的程式試驗了一下,已經驗證成功,記錄一下過程 生成p檔案的方法很簡單,在command wondow裡面用 p...