MATLAB基本数据类型和调⽤⽅式
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)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论