MATLAB学习

虽然大学信号与系统、DSP等专业课涉及了一些MATLAB的学习,但是一直没有系统地学过,学过的也没有经常用也忘了不少,研究生估计又要跟MATLAB打三年交道了,趁着假期捡捡旧知识学点新知识。

MATLAB系统由MATLAB开发环境、MATLAB数学函数库、MATLAB语言、MATLAB图形处理系统和MATLAB应用程序接口(API)五大部分构成。MATLAB语言是一种高级的基于矩阵/数组的语言。MATLAB应用程序接口(API)是一个使MATLAB语言能与C、Fortran、C#、Java等其它高级编程语言进行交互的函数库。

一、MATLAB基本内容

1、常量与变量

变量:

(1) 变量是数值计算的基本单元。与C语言等其他高级语言不同,MATLAB不需要事先定义变量及其类型,但是运算表达式中不允许有未定义的变量。

(2) MATLAB将所有变量均存成double的形式,不需经过变量定义。

(3) 如果不想让MATLAB每次都显示运算结果,只需在运算式最后加上分号。

2、基本数学函数

3、向量基本操作

(1) 行列向量写法

(2) 更改、增加、删除向量中的元素

(3) 常用的向量运算函数

4、数组array及其操作

在MATLAB内部的任何数据类型,都是按照数组的形式进行存储和运算的。

按照数组元素个数和排列方式,MATLAB中的数组可以分为:空数组:没有元素;一维数组:只有一行或者一列元素的向量,即行向量、列向量;二维数组:具有多行多列元素;多维数组:具有行、列、页等多个维度。

(1) MATLAB中数组创建

一般使用方括号[]、逗号或空格、分号来创建。同一行中的元素用逗号或者空格分隔,不同行之间用分号分隔。

空数组

用于数组声明,数组清空,以及特殊的运算场合。

一维数组

对于列向量,要么方括号中元素之间用分号分隔;要么通过转置运算符(')将行转为列。

通过冒号( : )创建:Var=start_val : step : stop_val,step不指定时默认为1.

通过linspace函数创建:Var=linspace(start_val,stop_val,n),形成n个元素的等差数列。n不指定时默认为100.

通过logspace创建:Var=logspace(start_val,stop_val,n)。产生从10^start_val到10^stop_val包含n个元素的等比一维数组,n不指定时默认为50.

二维数组

(2) 数组属性

包括数组的排列结构、数组的尺寸大小、维度、数组数据类型,以及数组的内存占用情况等。

数组结构

数组的结构指的是数组中元素的排列方式。

数组大小

MATLAB中最常用的返回数组大小的是size函数。

d=size(A):将数组A的行列尺寸以一个行向量的形式返回变量d,即d=[m,n];

[a,b]=size(A):将数组A在行、列的方向的尺寸返回给a,b,即a=m,b=n;

length函数常用于返回一维数组的长度,但是A为普通二维数组时,length(A)返回size(A)得到的两个数中较大的那个。

numel函数返回数组元素总个数,对于m行n列的数组,即返回m*n。

数组维度

通俗讲就是数组具有的方向。不如普通的二维数组,具有行的方向和列的方向,就是说数组具有两个方向,是一个二维数组。

对于空数组、标量和一维数组,MATLAB还是当作普通二维数组对待的,因为他们都至少具有两个维度(至少具有行和列两个方向)。

MATLAB中计算数组维度可以用函数ndims。ndims(A)返回结果实际上等于length(size(A))。

数组的数据类型

对于不同数据类型的元素,可以有数值数组(实数数组、浮点数值数组、整数数组等)、字符数组、元胞数组、字符串的元胞数组、结构体数组等。

数组的内存占用

可以通过whos命令查看当前工作区中所有变量或指定变量的多种信息,包括变量名、数组大小、内存占用和数组元素的数据类型。

(3) 创建特殊数组

0-1数组

zeros(m,n):创建一个m行n列的全0数组;zeros(size(A)):创建一个和A具有相同大小的全0数组;zeros(m):创建一个m行m列的全0数组。

ones(m,n):创建一个m行n列的全1数组;ones(size(A)):创建一个和A具有相同大小的全1数组;ones(m):创建一个m行m列的全1数组。

eye:创建单位数组,用法同上。

对角数组

diag函数:该函数接收一个一维行向量数组作为输入参数,将此向量的元素逐次排列在指定的对角线上,其他位置用0填充。

diag(v):主对角元素依次对应于向量v的元素;

diag(v,k):对角数组的第k条对角线元素依次对应于向量v的元素;

随机数组

rand(m,n):产生m行n列的随机数组,其元素服从0到1的均匀分布;

rand(size(A)):产生和数组A具有相同大小的、元素服从0到1的均匀分布的随机数组;

randn(m):产生m行m列的随机数组,其元素服从0到1的均匀分布。

randn函数:用于产生元素服从标准正态分布的随机数组,用法与rand类似。

魔方数组

这种数组行、列数相等,而且每一行、每一列的元素之和都相等。

通过magic(n)创建n行n列的魔方数组。

(4) 数组索引

MATLAB中,普通二维数组元素的数字索引方式又分为两种:双下标索引和单下标索引。

双下标索引:第一个数字指定元素所在的行位置,第二个数字指定元素所在的列位置。

单下表索引:采用了列元素优先的原则,对于m行n列的数组A,A(x,y)对应A((y-1)m+x)。

这两种数字索引方式中的数字索引也可以是一个数列,从而实现访问多个数组元素的目的。

双下标索引转换为单下标索引:sub2ind命令,其语法为:IND=sub2ind(siz,I,J)

其中siz用于指定数组的行列尺寸;I和J分别是双下标索引中的两个数字;IND则为转换后的单下标数字。

单下标索引转换为双下标索引:ind2sub命令,其语法为:[I,J]=ind2sub(siz,IND)

(5) 裁剪数组

MATLAB中裁剪数组,最常用的就是冒号操作符。

如果某一索引位置上不是用数字表示,而是用冒号代替,则表示这一索引位置可以取所有可以取到的值。

(6) 数组形状的改变

数组转置

共轭转置:操作符( ' )或者函数ctranspose;

非共轭转置:操作符(. ' )或者函数transpose。

数组翻转

(7) 数组运算

最基本的加、减、乘、乘方等;

数组除法实际上是乘法的逆运算,相当于参与运算的一个数组和另一个数组的逆数组相乘。

MATLAB中,数组除法有左除(/)和右除(\)。

A/B相当于A*inv(B);A\B相当于inv(A)*B。

点运算

当对两个尺寸相同的数组进行元素对元素的乘、除,或者对数组的逐个元素进行乘方,可以通过点运算来实现。

(8) 数组查找

MATLAB中数组查找只有一个函数find,它能够查找数组中的非零元素并返回其下标索引。

a=find(A):返回数组A中非零元素的单下标索引;

[a,b]=find(A):返回数组A中非零元素的双下标索引。

(9) 数组排序

MATLAB中的排序函数是sort。

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值