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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值