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