第三讲MATLAB高级数据及其运算详述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

am=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16];
f=am(2,3)
g=am(2:4:16)
%单下标
h=am(:,2)
l=am(:)
%啥东西呢?按单下标排列,得一列向量
k=am(:)'
%-------Assignment of the 2-D array----------am(3,2)=0 am([2 8 12])=[0 0 0] am(:)=0 %和命令l=am(:) 进行比较!!!
tril 提取数组下三角部分,并生成下三角阵
triu 提取数组上三角部分,并生成上角阵
a=-4:4
b=reshape(a,3,3) %b的元素个数等于a的个数
c=b+i*b
d=b'
e=c‘ %共轭转置
f=flipud(b)
%flip up and down
g=fliplr(b)
%flip left and right
>> t='How about this character string?‘
%单词间一个空格
t=
How about this character string?
>> size(t)
ans =
1 32
>> whos t
Name Size
Bytes Class
t 1x32
64 char array
>> u=abs(t) %计算每一个字符串的ASC码函数 u=
%-----------methods of magic---
f=magic(3)
%-----------methods of ones-----
g=ones(3) h=ones(2,3) k=ones(size(a))
%-----------methods of zeros------
l=zeros(3) m=zeros(2,3) n=zeros(size(a))
h=cat(1,f,g) % 等价于h=[f;g]
%cat the f and g in the 1st dimension,Column
k=cat(2,f,g) %等价于k=[f g]
%cat the f and g in the 2nd dimension,Row
l=cat(3,f,g) %叠加
% 4=2+(11-1)d, d=0.2 Columns 1 through 10 1.0000e+002 1.5849e+002 2.5119e+002 3.9811e+002 6.3096e+002 1.0000e+003 1.5849e+003 2.5119e+003 3.9811e+003 6.3096e+003 Column 11 1.0000e+004
%cat the f and g in the 3rd dimension
%B = repmat(A, m,n) creates a large matrix B consisting of an
%m-by-n tiling of copies of A
p=repmat(b,2,2) %由4个b构成 下表有时也会用到:
5 数组生成函数(类似矩阵情况,略讲) diag对角方阵(数组) eye单位方阵(数组) magic魔方阵(数组) ones全一阵(数组) rand随机阵(数组) randn正态随机阵(数组) zeros全零阵(数组)
%-----------methods of diag-----------
p^A
(A方阵)啥东西?
A./B
A,B对应元素除
A/B
A右除以B
B.\A
与上面等价
B\A
A左除以B,于上不同
exp(A)
e为底,A元素为指数
expm(A)
A的矩阵指数函数
log(A)AΒιβλιοθήκη 元素求自然对数logm(A)
A的矩阵对数函数
sqrt(A)
A元素求平方根
sqrtm(A) A的阵平方根函数
注意: expm(A)等价于(1)[V,D]=eig(A), (2) expm(A)=V*exp(D)/V 关于logm和sqrtm等用法自己去查阅和学习。
自己练习
6数组扩展
A=reshape(1:9,3,3)
赋值扩展
A(5,5)=21
多次寻访扩展 A(:,6)=12
合成扩展
A=A(:,[1:6,1:6]) %运 行
B=ones(2,12) AB=[A;B] %上下合成
C=zeros(5,2) AC=[A,C] %左右合成
7 数组操作函数
一、 数值数组
1 一维数组 创建 逐个元素输入法(元素不多时) 冒号生成法(生成等步长一维数组) x=a:inc:b(inc默认为1,(b-a)为inc的 整数倍,也可以不是) 函数法 linspace和logspace,如linspace(1,8,10) logspace(0,6,3) 对数组的寻访和赋值 利用下标index 下标从1开始,到end结束
%This segment demonstrate the access of 1-D numerical array
x1=a(3) x2=a(1)/b(3) x3=c([2 4 6]) %等价x3=c(2:2:6) x4=d(2:6) x5=e(10:-2:1) x6=e(find(e<5)) %先找find(e<5)找小于5的元素的序号 x7=f([1 3 5 7 8 6 4 2]) 自己练习之!!!
第三讲
MATLAB高级数据及其运 算
在matlab中,矩阵(变量)都不必事先定义维 数大小,matlab会根据用户所输入的矩阵结构 自动配置,并在此后的运算中按正确的数学法 则自动的调整矩阵的维数。
数组是由一组实数、复数或者字符等排成的长 方阵列(array),可以是“一维”、“二 维”、“三维”或者“多维”。
自己练习
%-----------methods of rand----------------- %The rand function generates arrays of random % numbers whose elements are %uniformly distributed in the interval (0,1). %均匀分布 a=rand(3) p=rand(3,4) q=rand(size(a))
%This segment demonstrate the assignment of 1-D numerical array
x3(2)=0 %回车得新的X3
x4([1 3 5])=[0 0 0] x4([2 4])=0 %2个元素都换成0
2 二维数组 创建 直接输入法(以行为单位,行间以“;” 或者enter间隔。行内以空格或者”,”分 开) 以M文件创建(后面去讲!) 标识 双下标(行列下标) 单下标(按列存) 寻访与赋值
How about this character string?
>>u=t(16:24) u=
character 再如:
>>u=‘Hello,'; >>v=‘World!' ;
>>w=[u,v] %用cat试试! w=
%This segment demonstrate the creation of 1-D numerical array
a=[2 pi/2 sqrt(3) 3+5i] b=0:2:20 c=2:12 d=0:1.5:10 e=linspace(1.1, 9.6, 12) %包含1.1和9.6 f=logspace(2, 4, 11)
函数 all(all( )) any(any()) isempty isequal isreal find isfinite isinf isletter isnan isprime isspace
功能 如果所有的元素都是非零值,返回1;否则,返回0。 如果有一个元素为非零值,那么返回1;否则,返回0 判断是否空矩阵,若是空,则值为1;否则为0 判断两矩阵是否相同 判断是否是实矩阵 返回一个由非零元素的下标(单下标)组成的列向量 判断各元素是否有限数 判断各元素是否无穷大 判断各元素是否是字母 判断各元素是否“非数” 判断各元素是否质数 判断各元素是否空格
3 数组运算
数组运算规则:无论在数组上施加什么运算, 对数组每个元素都平等地实施同样的操作。
数组运算常用函数:(三角函数、指数、对 数函数、复数函数等)
4 与矩阵运算比较
矩阵与数组运算的区别:二维数组是数的存 储形式,矩阵是一种变换或者映射算子;二 者数据结构(即计算机表达)一致。
运算指令对比,见下页
a=diag([2 3 4 5]) %生成对角阵 b=diag([2 3],-1) %主对角线下的,生成对角阵 x=diag(b) %提取主对角线元素作成列向量 u=diag(b,-1) %提取主对角线下的元素作成列向量
%-----------methods of eye-------
c=eye(3) d=eye(3,2) e=eye(size(a))
指令
含义
cat
把大小相同的数组,按某一方向迭加为高维数组
diag 提取对角线元素,或生成对角阵。
flipud 以数组水平中线翻转180°
fliplr 以数组垂直中线翻转180°
repmat 按指定行或列铺放数组,以形成更大的数组
reshape 在总元素不变的情况下,改变数组的大小
rot90 逆时针旋转二维数组90°
二、字符串数组
1 字符串
a=123.45 %一个数值
b=‘123.45’ %字符串
c='example’ %字符串
每个数值占8字节;每一个字符存放占2字节
必须在英文状态下输入' '
whos a b c
Name Size
Bytes Class
a
1x1
b
1x6
c
1x7
8 double array 12 char array 14 char array
数组乘除、乘方、开方、指数运算等均为 “点”运算符
数组运算与矩阵运算是完全不同的概念,数组运算是MATLAB 特有的便于计算和表示的算法,而矩阵运算是有严格的数学定
义的。
数组运算
矩阵运算
指令
含义
指令
含义
A. '
非共轭转置
A'
共轭转置
A.^n
A元素的n次幂
A^n
矩阵自乘n次
p.^A
p为底,A元素为幂
y = 10; z = 50; randnum = y + (z-y) * rand(5)
%-----------methods of randn----------------- %The randn function generates arrays of % random numbers whose elements are %normally distributed with mean 0, variance and % standard deviation are 1. r=randn(3) s=randn(3,4) t=randn(size(a))
%-------Creation of the 2-D array-----------
a=3;
b=5;
c=[1 a a+b*i b; pi sin(pi) b*i i] %写成bi行吗
d=c‘; %共轭转置
e=c(:,1:2)+i*d(1:2,:)
%此命令必练
%-------Access of the 2-D array-----------
数组运算:无论在数组上施加什么运算,均是 对数组每个元素都平等地实施同样的操作(点运 算符)。
数组使程序简单易读;指令更接近于数学计算 公式;提高程序向量化程度;提高计算效率。
数组分类
按照数组中的数据类型分: 数值数组 字符串数组 元胞数组 结构数组
按数组的结构分: 一维 二维 三维 多维
Columns 1 through 12 72 111 119 32 97 98 111 117 116 32 116 104
Columns 13 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105 110 103 63 % 这里实际上计算每一个字符的ASC码 >> char(u) %由ASC码计算相应的字符串 ans =
相关文档
最新文档