MATLAB 基本数据类型和调用方式
MATLAB的數據類型
????MATLAB的數據類型主要包括數字、字符串、矩陣(數組)、單元型數據及結構型數據。能自動根據所賦予的值或對變量所進行的操作來確定變量的類型 .
2.1.1變量與常量
1.變量的命名規則:
① 變量名區分大小寫;
② 變量名長度不超過31位,第31個字符之后的字符將被忽略;
③ 變量名以字母開頭,變量名中可包含字母、數字、下劃線,但不能使用標點。
2.常量: MATLAB預定義量
2.1.2.字符串
字符串:(與字符數組或矩陣基本等價):以單引號分界
????如s2=‘matlab’或s2=[‘matlab’]
1.字符數組的生成(每個元素的存儲長度相等,每個字符占兩個字節):char
如s3=char(‘s’,’y’,’m’,’b’,’o’,’l’,’I’,’c’);
2.字符串與數組之間的轉換:轉換為數值代碼double,轉換為元胞數組cellstr,如double(s3)’
如a=[1:5]; %生成數值數組
b=num2str(a); %將a轉換為字符串后賦給b
a*2, b*2, str2num(b)*2
4.執行字符串(將字符串作為表達式執行)eval
例2-1 用eval函數生成四階的Hilbert矩陣
n=4;
t=‘1/(i+j-1)’;
a=zeros(n);
for i=1:n
for j=1:n
a(i,j)=eval_r(t);
end
end
例 2-2 d=‘cd’;eval_r(d)
2.1.3 矩陣
矩陣(數組)是MATLAB數據存儲的基本單元.矩陣有向量運算、矩陣運算及
數組運算形式。
一、單元(細胞)型變量:單元型變量實際上是一種以任意形式的數組為元素的多維數組.
1.單元(細胞)型變量的定義:單元型變量的定義需要使用大括號,而元素之間由逗號隔開.
兩種定義方式:①用賦值語句直接定義;②由cell函數預先分配存儲空間,然后對單元元素逐個賦值.
如A=[1,2;3,4];
B={1:4,A,’abcd’}
如:可對單元的元素直接賦值(單元型變量的下標用大括號索引)
B{1,1}=1:4;
B{1,2}=A;
B{1,3}=‘abcd’:
如B=cell(1,3) 將在工作空間中建立一單元型變量B,其元素均為空矩陣.
注:①單元型變量元素的引用采用大括號作為下標的標識;小括號作下標標識時只顯示該元素的壓縮形式.
②單元型變量自身可嵌套(即單元型變量的元素可以是單元型變量);一般情況,矩陣的元素不能是矩陣。
如C={1:4,A,B}
C{3}{3} %嵌套中的單元型變量元素的引用
2.單元型變量的相關函數
表2-4 MATLAB單元型變量的函數
如 cellfun(‘islogical’,B) %判斷B中元素是否為邏輯型
Size(C) %查看變量C的維數
Reshape(C,3,1)
C = {rand(3) ones(3,1) eye(3) zeros(3,1)};
[a,b,c,d] = deal(C{:})
二、結構型變量
結構型變量:是另一種可將不同類型數據組合在一起的MATLAB數據類型。
①結構型變量以指針方式來傳遞數據;
②相當于數據庫中的記錄,可存儲一系列相關的數據。
1.結構型變量的定義。兩種方式:①直接賦值;②由函數struct定義。
直接賦值時:應指出結構中的屬性名,并以指針操作符”.”連接變量名與屬性名。
如A.a1=‘abcd’;
A.a2=1;
A.a3=[1,2,3,4];
對給定變量下標賦值,可構成數組(結構型數組)
如B=[1,2;3,4];
A(2).a1=‘efgh’; A(2).a2=2; A(2).a3=B;
2.Struct函數調用格式
結構型變量名=struct(元素名1,元素值1,元素名2,元素值2,…)
如C=struct(‘c1’,1,’c2’,B,’c3’,’abcd’)
結構型變量可嵌套定義
如C.c1=A
C.c1(1).a1
3.結構型變量的相關函數
表2.5 MATLAB的結構型變量函數
2.2 向量及其運算
2.2.1 向量的生成
1.直接輸入向量:向量元素用“[ ]”括起來,元素之間用空格、逗號或分號分隔。(用空格和逗號分隔生成行向量;用分號分隔生成列向量)
2.用冒號表達式生成向量:基本形式 x=x0:step:xn
如a=1:2:12
A=1:-2:12
3.線性等分向量的生成:linspace
格式:y=linspace(x1,x2) %生成100維的行向量
y=linspace(x1,x2,n) %生成n維的行向量
如a1=linspace(1,100,6)
4.對數等分向量的生成(自動控制、數字信號處理中常用對數刻度坐標)
格式:y=logspace(x1,x2) %生成50維對數等分向量
Y=logspace(x1,x2,n) %生成n維對數等分向量,使y(1)=10x1,y(n)=10x2
如a2=logspace(0,5,6)
注:向量可從矩陣中提取;可把向量看成1*n(行向量)或n*1階(列向量)矩陣。
? 5.數組編址與表達式結合構建數組
? 如 x=1:5,y=1:2:9
? Z=[x y]
? T=[z(1:2:5) 2 4 6]
? (2)列向量:以分號相隔、以回車分行、共軛轉置算子(‘)、轉置算子(.‘)
? 表2.6 簡單數組創建
2.2.2 向量的基本運算
1.加(減)與數加(減); 2.數乘
2.2.3 點積、叉積與混合積的實現
1.點積(內積)的計算(投影的乘積):由函數dot來實現
dot(a,b)等同于a’*b 或sum(a.*b)
2.叉積(外積):由函數cross來實現
C=cross(a,b) %a和b為三維向量
如,計算垂直于向量a=(1,2,3)和b=(3,4,5)的向量
a =[1 2 3]; b=[3,4,5]; c=cross(a,b)
3.混合積: dot(a,cross(b,c)) %注意函數順序
2.3 矩陣及其運算
MATLAB的數值功能以矩陣為基本運算單元,矩陣的運算功能最全面、最強大。
2.3.1 矩陣的生成
1.直接輸入小矩陣:①以”[ ]”為其標識;②同行元素之間可由空格或”,”分隔;③行與行之間用”;”或回車分隔;④矩陣可不預先定義大小;⑤矩陣元素可為運算表達式。
如a=[sin(pi/3),cos(pi/4);log(9),tanh(6)];
2.創建M文件(分為命令式、函數式)輸入大矩陣
如%example.m
exm=[456 468 873 2 579 55
?????21, 687,54 488 8 13
?????65 4656 88 98 021 5
?????475 68,4596 654 5 987
?????5488 10 9 6 33 77 ]
2.3.2 矩陣基本數學運算
矩陣的基本數學運算包括:四則運算、與常數的運算、逆運算、行列式運算、冪運算、指數運算、對數運算與開方運算等。
1.四則運算:加減的兩矩陣要求同階;相乘的矩陣有相鄰公共維;矩陣除法有左除“”和右除”/”兩種,通常右除要快一點;左除可避免被除矩陣的奇異性問題。
例1:比較用左除和右除法分別求解恰定方程的解
rand(‘seed’,12); a=rand(100)+1.e8; x=ones(100,1);b=a*x;
cond(a) %求條件數
tic;x1=b’/a; t1=toc
er1=norm(x-x1’) %計算解與精確解之間的誤差
re1=norm(a*x1’-b) /norm(b)
用左除法
tic;x1=ab;t1=toc
er2=norm(x-x1)
re2=norm(a*x1-b)/norm(b)
2.標準乘除(*,左除,右除/),點乘除(.*,左除.,右除./)
2.數組操作
?(1)多次尋訪擴展法
? Xx=x(:,[1:5,1:5])
?(2) 合成擴展法
? Y=ones(2,5)
? Xy_r=[x;y] %行擴展
? Xy_c=[x,y(:,1:4)’] %列擴展
3.子數組查找(find)
? X=-4:4
? i=find(abs(x)>2)
? Y=x(i)
? A=[1 2 3;4 5 6;7 8 9]
? [i,j]=find(A>=5)
總結
以上是生活随笔為你收集整理的MATLAB 基本数据类型和调用方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LVQ神经网络的分类
- 下一篇: 友元函数的几种形式