1.2MATLAB數值數據
l 數值數據類型的分類
l 數值數據的輸出格式
l 常用數學函數內部函數
1.數值數據類型的分類
l 整型
l 浮點型
l 復數型
(1)整型
1.數值數據類型的分類
無符號整數:無符號8位整數、無符號16位整數、無符號32位整數、
無符號64位整數。 (按分配字節數)
帶符號整數:帶符號8位整數、帶符號16位整數、帶符號32位整數、
帶符號64位整數。
無符號8位整數數據范圍:00000000~11111111(0~2^8-1)。
帶符號8位整數數據范圍:10000000~01111111(-2^7~2^7-1)。(最左邊為符號位,0表示正數,1表示負數)
Matlab提供數據類型轉換函數來實現數據類型的轉換。例如uint8函數將數值數據轉換為無符號8位整數,int8函數將數值數據轉換為有符號8位整數
>> x=int8(129) //帶符號8位整型數據的最大值是127
x = 127
>> x=uint8(129) //無符號最大為255
x = 129
(2)浮點型
分為單精度型型和雙精度類型,單精度型實數在內存中占用4個字節,雙精度型實數在內存中占用8個字節。雙精度型數據進度更高。MATLAB中默認為雙精度型。
single函數:將其他類型的數據轉換為單精度型。
double函數:將其他類型的數據轉換為雙精度型。
>> class(4) //調用class函數,得到數據類型
ans = double
>> class(single(4))
ans = single
>> class(double(4))
ans = double
(3)復型
復型數據包括實部和虛部兩個部分,實部和虛部默認為雙精度型,虛數單位用i或j來表示。
real函數:求復數的實部
imag函數:求復數的虛部
>> 6+5i
ans = 6.0000 + 5.0000i
>> 6+5j
ans = 6.0000 + 5.0000j //表示同一個復數
2.數據的輸出格式
可以采用日常計數法和科學技術法兩種方法。
日常計數法:3.14159、-9.359i、3+5i
科學技術法:用字母小寫e或大寫E表示以10為底的指數。1.78029e2、6.732E2i(純虛數)、
format命令的格式:
format 格式符 //格式符決定了輸出格式
>> format long
>> 50/3
ans = 16.666666666666668 15位
>> format
>> 50/3
ans = 16.6667 4位
TIP:注意:format命令只影響數據輸出格式 ,而不影響數據的計算和存儲。
3.常用數學函數
(1)函數的調用格式為:
函數名(函數自變量的值)
函數的自變量規定為矩陣變量,當然也可以是標量,標量本身是矩陣的一種特例。
函數在運算時是將函數逐項作用於矩陣的每個元素上,所以最后運算的結果就是一個與自變量同型的矩陣。
>> A=[4,2;3,6]
A = 4 2
3 6
>> B=exp(A) //調用exp函數求自然指數 自變量為A賦值給B
B = 54.5982 7.3891
20.0855 403.4288
TIP:MATLAB中和數學中自然對數表示不一樣。數學中ln表示。
(2)常用函數的應用
① 三角函數有以弧度為單位的函數和以角度為單位的函數,如果是以角度為單位的函數就在函數名后面加“d”,以示區別。
>> sin(pi/2)
ans = 1
>> sind(90)
ans = 1
② abs函數可以求實數的絕對值、復數的模、字符串的ASCII碼值。
>> abs(-4)
ans = 4
>> abs(3+4i)
ans = 5
>> abs('a')
ans = 97
③用於取整的函數有fix、floor、ceil、round。
>> round(4.7)
ans = 5
>> fix(-3.2)
ans = -3
>> floor(3.6)
ans = 3
>> ceil(-3.8)
ans = -3
round函數是按照四舍五入的規則來取整。
ceil是向上取整,取大於等於這個數的第一個整數。
floor是向下取整,取小於等於這個數的第一個整數。
fix是固定取靠近0的那個整數,也就是舍去小數取整。
④函數應用舉例。
例1:分別求一個三位正整數的個位數字、十位數字和百位數字。
數學上:三位正整數處於10的余數為該數的個位數字。除以10 取整后就去掉了這個數的個位數字,得到的數在除以10 取余數,余數就是新得到的數的個位數字,也就原來數字的十位數字。正整數除以100取整后就去掉了這個數的個位和十位數字,得到百位數字。
>> m=345; //建立變量m,並賦值
>> m1=rem(m,10) //調用rem函數,求余數並賦值
m1 = 5
>> m2=rem(fix(m/10),10) //先調用fix函數取整,在調用rem函數求余數
m2 = 4
>> m3=fix(m/100)
m3 = 3
例2:求[1,100]區間的所有素數。
一般程序利用循環結構實現。MATLAB提供了一個判斷n是否素數的函數isprime(n),當n是素數時,返回1,否則返回0。
>> x=1:100; //生成1-100全部整數組成的向量x
>> k=isprime(x); //調用isprime函數 結果為1/0
>> k1=find(k); //調用find函數生成k1向量 k1為k非0元素的序號,x的素數序號
>> p=x(k1) //輸出全部素數
p =
1 至 13 列
2 3 5 7 11 13 17 19 23 29 31 37 41
14 至 25 列
43 47 53 59 61 67 71 73 79 83 89 97
1.3變量及其操作
計算機所處理的數據都是存放在內存單元中的,每個內存單元都有個唯一的地址。程序通過地址來訪問內存單元。
高級語言中,是通過名字訪問內存單元的。取了名的內存單元就叫變量。
1.變量與賦值語句
在MATLAB中,變量名是以字母開頭,后接字母、數字或下畫線的字符序列, 最多63個字符。
TIP:
(1)變量名區分字母的大小寫。
(2)標准函數名以及命令名一般用小寫字母。
如何給變量賦值呢?
賦值語句兩種格式:
(1)變量=表達式
(2)表達式 //賦值給matlab的預定義變量ans
如果在賦值語句的最后加分號,則僅僅執行賦值操作,不會顯示執行運算結果。
例子:
>> x=sqrt(7)-2i; //調用了求平方根函數
>> y=exp(pi/2); //調用了自然指數函數exp 不可以寫成乘方的形式
>> z=(5+cosd(47))/(1+abs(x-y))
Z = 1.4395
2.預定義變量
預定義變量是在MATLAB工作空間中駐留,由系統本身定義的變量。
ans是默認賦值變量
i和j代表虛數單位
pi代表圓周率
NaN代表非數(重要)
使用的時候避免對預定義變量重新賦值。
3.變量的管理
(1)內存變量的刪除與修改
在工作區中修改。右擊,選擇對應命令。
who命令與whos命令 顯示在工作空間中已經駐留的變量名清單
(2)內存變量文件
用於保存MATLAB工作區變量的文件叫做內存變量文件,其擴展名為.mat
,也叫MAT文件。
save命令:創建內存變量文件。
load命令:裝入內存變量文件。
>> save mydata a x //將變量a和x保存在mydata文件中
>> load mydata