腳本
Matlab命令執(zhí)行方式有交互式的命令執(zhí)行與腳本兩種方式。交互式的命令執(zhí)行方式,在命令行窗口逐條輸入命令,MATLAB逐條解釋執(zhí)行;而腳本方式,將有關命令編成程序存儲在一個擴展名為.m的文件中,每次運行該腳本,Matlab就會自動依次執(zhí)行腳本中的命令。
腳本的編輯
首先,在編輯腳本之前,先了解Matlab的編輯器。Matlab編輯器界面包括功能區(qū)和編輯區(qū)兩個部分。如圖:
功能區(qū):
編輯區(qū):
然后,選擇啟動Matlab編輯器的方式:
- 點擊Matlab桌面的“主頁”,點擊選項卡工具條中的“新建腳本”
- Matlab命令行窗口中輸入命令:
edit 文件名
最后,進行編輯腳本。建立一個腳本,其功能是:用兩個實變量R、M生成復變量RM,然后運行該腳本。建立腳本文件并以文件名setcomp.m保存在當前目錄下。
%示例:在指定的Matlab工作目錄下,對命令窗口進行輸入:
>> edit setcomp
%創(chuàng)建文件名后會自動跳轉在編輯器下,然后輸入如下代碼并保存:
R=[1,2,3;4,5,6];
M=[11,12,13;14,15,16];
RM=complex(R,M);
>> %再在命令行窗口中輸入腳本文件名,按Enter運行:
>> setcomp
>>%運行后,再輸入RM,查看結果:
>> RM
RM =
1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i
4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i
程序控制結構
程序控制方式是指在程序控制下進行的數據傳遞方式。程序控制結構是指以某種順序執(zhí)行的一系列動作,用于解決某個問題。其中,程序控制結構包括順序、選擇、循環(huán)這三種的基本控制結構。另外,每種結構僅有一個入口和出口。由這3種基本結構組成的多層嵌套程序稱為結構化程序。
順序結構
順序結構的程序設計是最簡單的,按照解決問題的順序寫出相應的語句,計算機按此順序逐條執(zhí)行語句,當一條語句執(zhí)行完畢,控制自動轉到下一條語句。
數據的輸入:
input()函數:通過鍵盤的輸入獲取數據
調用格式:data = input(提示信息),其中,提示信息為字符串,用于提示用戶輸入相應的數據。
注:若要輸入字符串,需要前后加單撇號或雙引號,界定字符串的起始和結束;或調用另一種格式:data = input(提示信息,‘s’)數據的輸出:
disp()函數:用于在命令窗口顯示變量和表達式的值
調用格式:disp(輸出項),其中,輸出項既可以為字符串,也可以為矩陣。
%示例:
>> matrix1 = input('創(chuàng)建2x3階元素全為1的矩陣:')
創(chuàng)建2x3階元素全為1的矩陣:ones(2,3)
matrix1 =
1 1 1
1 1 1
>> name = input('請輸入你的名字:')
請輸入你的名字:'小明'
name =
'小明'
>> %或者:
>> name = input('請輸入你的名字:','s')
請輸入你的名字:小明
name =
'小明'
>> disp(matrix1)
1 1 1
1 1 1
>> disp(name)
小明
選擇結構
選擇結構又稱為分支結構。當程序執(zhí)行到控制分支的語句時,首先判斷條件,根據條件表達式的值選擇相應的語句執(zhí)行。分支結構包括單分支、雙分支和多分支三種形式。
(1)單分支:
if 條件表達式
語句塊
(2)雙分支:
if 條件表達式1
語句塊1
else
語句塊2
(3)多分支:
if 條件表達式1
語句塊1
elseif 條件表達式2
語句塊2
…
elseif 條件表達式n
語句塊n
else
語句塊n+1
end
%在指定的Matlab工作目錄下,對命令窗口進行輸入:
>> edit opt %創(chuàng)建腳本
%創(chuàng)建文件名后會自動跳轉在編輯器下,然后輸入如下代碼并保存:
%示例:
%輸入一個字符,若為大寫字母,則輸出其對應的小寫字母;
%若為小寫字母,則輸出其對應的大寫字母;
%若為數字字符則輸出其對應數的平方,若為其他字符則原樣輸出。
str = input("請輸入一個字符:","s");
if str >= 'A' && str <= 'Z'
disp(lower(str));
elseif str >= 'a' && str <= 'z'
disp(upper(str));
elseif str >= '0' && str <= '9'
disp(str2double(str)^2);
else
disp(str);
end
>> %再在命令行窗口中輸入腳本文件名,按Enter運行:
>> edit opt
>> opt
請輸入一個字符:S
s
循環(huán)結構
循環(huán)結構是當程序執(zhí)行到循環(huán)控制語句時,根據循環(huán)判定條件對一組語句重復執(zhí)行多次。循環(huán)結構可以看成是一個條件判斷語句和一個向回轉向語句的組合,可以實現有規(guī)律的重復計算處理。另外,循環(huán)結構的三個要素:循環(huán)變量、循環(huán)體和循環(huán)終止條件。
break語句用于終止循環(huán)的執(zhí)行;continue語句控制跳過循環(huán)體中的某些語句。
(1)for語句:
for 循環(huán)變量=表達式1:表達式2:表達式3
循環(huán)體語句
end
其中,表達式1的值為循環(huán)變量的初值,表達式2的值為步長,表達式3的值為循環(huán)變量的終值。步長為1時,表達式2可以省略。
(2)while語句:
while 條件表達式
循環(huán)體語句
end
%在指定的Matlab工作目錄下,對命令窗口進行輸入:
>> edit NarcissisticNumber %創(chuàng)建腳本
%創(chuàng)建文件名后會自動跳轉在編輯器下,然后輸入如下代碼并保存:
%示例:
%一個各位數字的立方和等于該數本身的3位整數稱為水仙花數。輸出全部水仙花數
Nar_num = []; %創(chuàng)建空矩陣存放結果
for n = 100:999
bai = fix(n/100); %求n的百位數字
shi = mod(fix(n/10),10); %求n的十位數字
ge = mod(n,10); %求n的個位數字
if n == bai^3+ shi^3 + ge^3
Nar_num=[Nar_num,n]; %存入結果
end
end
disp(Nar_num)
>> %再在命令行窗口中輸入腳本文件名,按Enter運行:
>> NarcissisticNumber
153 370 371 407
函數
計算機的函數,是一個固定的一個程序段,或稱其為一個子程序,它在可以實現固定運算功能的同時,還帶有一個入口和一個出口,所謂的入口,就是函數所帶的各個參數,我們可以通過這個入口,把函數的參數值代入子程序,供計算機處理;所謂出口,就是指函數的函數值,在計算機求得之后,由此口帶回給調用它的程序。函數能提高應用的模塊性與代碼的重復利用率。
函數文件
在Matlab中,擴展名為.m的文件稱為M文件,是一種程序化的編程語言,分為腳本文件(scripts)和函數文件(functions)。而函數文件是在腳本文件的基礎上多添加了一行函數定義行。
函數文件的基本結構:
1.函數名的命名規(guī)則與變量名的命名規(guī)則相同;
2.有多個參數時,參數和參數之間用逗號分隔;
3.若輸出參數多于一個,則應該用方括號括起來。
函數文件的基本格式:
function 輸出形參表=函數名(輸入形參表)
注釋說明部分
函數體語句
函數調用的基本格式:
[輸出實參表]=函數名(輸入實參表)
函數調用時各實參出現的順序,應與函數定義時形參的順序一致
%點擊"新建",再點擊"函數",創(chuàng)建函數文件
%編寫函數文件,求1/(m+1)+1/(m+2)+…+1/(m+n)與1/m(m+1)+1/(m+1)(m+2)+…+1/(m+n?1)(m+n)。
function [s1,s2]=sumfraction(m,n)
%SUM sumfraction.m calculates sum of fractions
%m 區(qū)間下界
%n 區(qū)間上界
%s1 1/(m+1)+1/(m+2)+...+1/(m+n)
%s2 1/m/(m+1)+1/(m+1)/(m+2)+...+1/(m+n-1)/(m+n)
s1=0;s2=0;
for k=m+1:m+n
s1=s1+1/k;
s2=s2+1/(k-1)/k;
end
>> %在命令窗口調用以上定義的函數,示例:
>> %求1/(8+1)+1/(8+2)+…+1/(8+8)與1/8*(8+1)+1/(8+1)(8+2)+…+1/(8+8?1)(8+8)。
>> %形參m、n對應的值分別為8、8。
>> [s1,s2]=sumfraction(8,8)
s1 =
0.6629
s2 =
0.0625
匿名函數
匿名函數是一種特殊的函數定義形式,不存儲成函數文件。匿名函數的調用與標準函數的調用方法一樣,但定義只能包含表達式。通常,匿名函數與函數句柄變量相關聯(lián),通過句柄變量調用該匿名函數。
定義匿名函數的基本格式:
函數句柄變量=@(匿名函數輸入參數)匿名函數表達式文章來源:http://www.zghlxwxcb.cn/news/detail-441352.html
%示例:
>> func = @(x)8*x+8;
>> num = 88;
>> number = func(num)
number =
712
經典案例——猴子吃桃子
猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個;第二天早上又將剩下的桃子吃掉一半,又多吃了一個 。以后每天早上都吃前一天剩下的一半且多一個 。到第 10天早上想再吃時,見只剩下一個桃子了。求第一天共摘多少個桃子?請用循環(huán)編程解決該問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-441352.html
%解答:
>> %普通循環(huán)算法:
>> x(1)=1;
>> for i=1:9
x(i+1)=2*x(i)+2;
end
>> x(10)
ans =
1534
>> %遞歸循環(huán)算法:
>> edit MonkeyEatSpeech
function [S] = MonkeyEatSpeech(x)
if x == 10
S = 1;
else
S = 2+2*MonkeyEatSpeech(x+1);
end
>> S = MonkeyEatSpeech(1)
S =
1534
到了這里,關于Matlab:程序設計的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!