【笔记】夏季学期Matlab课程
1.设计安排
基本应用:基本运算、基本绘图、基本编程
信号处理:信号域变换、数据统计
高级应用:GUI设计、Simulink设计
2.考核方式
3.学习建议
推荐阅读:《矩阵论》
一、matlab的基本运算
1.基本元素
(1)数组
一维向量,二维矩阵,三维(多维)页面
· 用;将行向量分隔开,行向量内元素用空格或,分隔。
· 语句后加;则不会输出结果。
· 用矩阵(a,b)可以输出第a行,第b列的元素。用矩阵(x)可以输出按列顺序排列的第x个元素,
· 命名:字母开头,中间字母大小写、数字或_,长度不能超过31个
· 数组的第一个下标增长最快,第二个次之
(2)数组初始化
- 赋值语句方式
· 转置
w=v‘ |
矩阵(共轭)转置 |
w=v.' |
矩阵转置 |
· 特殊矩阵:
全零矩阵 |
zeros(m,n) |
全一矩阵 |
ones(m,n) |
对角矩阵 |
diag(v) 输入矩阵,输出向量;输入向量,输出矩阵 |
单位矩阵 |
eye(a) |
随机矩阵 |
rand(m,n) |
· 线性增量序列模式:
基本格式 linspace(startValue,endValue) linspace(startValue,endValue,nElements)
缺省 nElements = 100
· 指数增量序列模式:
基本格式 logspace(startValue,endValue) logspace(startValue,endValue,nElements)
从10^startValue到10^endValue
缺省 nElements = 50
· 冒号
基本格式 startValue:endValue startValue:increment:endValue
矩阵(数字x,:) 输出第x行 矩阵(:,数字y) 输出第y列
x:y 输出第x到第y个元素
创建向量 a:b 即取值为从a到b,间隔为1
· 中括号[]为空集
- input输入方式
my_value = input('enter an input value')
Array = input('Please enter an array(3*3):')
- 读取数据方式
实现软硬件内部功能切换,类似于EDA
(3)多维数组
将两个二维数组叠在一起就构成了三维数组,以此类推形成多维数组。
三维数组的寻址
查看属性:size() whos()
存取:load() save()
2.基本运算
(1)数组运算
· 数组与常数的四则运算
· 数组之间的四则运算
做对应元素之间的乘除要加.
除法分为./(右除)和.\(左除) 除号偏向谁,谁就是分母
· 数组的幂运算 .^
· 数组的指对数、开方运算
指数运算 exp |
对数运算 log |
开方运算 sqrt |
(2)矩阵运算
· 加减法运算
· 乘法运算 内维相同
· 除法运算
· 幂运算
A为矩阵或标量,B不能为矩阵
· 开方运算sqrtm
· 逆运算inv
3.多项式运算
· 求值
c=[系数] polyval(c,[x的取值])
· 求根
roots(p) |
计算多项式的根 |
poly(r) |
根据多项式的值计算多项式的系数 |
· 乘法和除法
对应向量的卷积和与解卷积
conv[p1,p2] |
卷积 |
[p3,r] = deconv [p1,p2] |
解卷积,r为余项 |
· 微分和积分
polyder(p) |
微分 |
polyint(p,k) |
积分,k为积分后加的常数 |
· 插值
目的:提高分辨率
插值函数必须通过所有样本点
一维插值 |
yi = interp1(x,y,‘method’) x,y为行向量,xi为插值范围内任意点的x坐标,yi为插值运算后的对应y坐标 method:linear(默认:加权平均,线性) nearest(折线) spline cubic |
二维插值 |
(均匀插值)zi = interp2(x,y,z,xi,yi,’method’) (随机插值)zi = griddata(x,y,z,xi,yi,’method’) |
· 拟合
p = polyfit(x,y,n)
n:拟合多项式的阶次
p:拟合的多项式,为n+1个系数的行向量
二、matlab的符号计算
(1)关系运算
eq(A,B) |
等于 |
== |
ne(A,B) |
不等于 |
~= |
gt(A,B) |
大于 |
> |
ge(A,B) |
大于等于 |
>= |
lt(A,B) |
小于 |
< |
le(A,B) |
小于等于 |
<= |
符合条件输出置1,否则输出0
find() 输出符合条件的元素位置
(2)逻辑运算
与 |
& |
and(A,B) |
或 |
| |
or(A,B) |
非 |
~ |
nor(A,B) |
· 符号表达式的建立
符号表达式代表数字、函数、算子和变量的字符串或字符串数组
不要求变量有预先确定的值
创建符号常量 |
sym(’常量‘) sym(常量,参数) d:返回最接近的十进制数 f: 返回最接近的浮点数 r: 返回最接近的有理数 e:返回最接近的带有机器浮点误差的有理值 |
创建符号变量和表达式 |
sym(‘变量’,参数) sym(‘表达式’) syms arg1,arg2… positive real unreal |
创建符号矩阵 |
A = str2sym(‘[a b;c d]’) B = '[a b;c d]' syms a b c d |
· 符号表达式的代数计算
基本运算符
符号矩阵 |
+ - * / \ ^ |
符号数组 |
+ - .* ./ .\ .^ |
关系运算符:== ~=
函数运算:
三角函数和双曲函数 |
sin cos tan sinh cosh tanh asin acos atan |
指数和对数函数 |
exp sqrt expm sqrtm log |
复数函数 |
conj real imag abs |
· 符号表达式的操作和转换
1)自由变量的确定
a. 小写i和j不作为自由变量
b. findsym函数:findsym(Expr,n)
Expr: 符号表达式或符号矩阵
n: 按顺序得出符号变量的个数
2)化简
数学函数的符号表达式可以有三种表达方法:
pretty(f) |
将符号表达式化简成与高等数学课本上显示符号表达式形式类似 |
collect(f) |
合并符号表达式的同类项 |
horner(f) |
将一般的符号表达式转换成嵌套形式的符号表达式 |
factor(f) |
对符号表达式进行因式分解 |
expand(f) |
对符号表达式进行展开 |
simplify(f) |
对符号表达式进行化简,它利用各种类型的代数恒等式,包括求和、积分、三角函数、指数函数以及 Bessel 函数等来化简符号表达式 |
simple(f) |
对符号表达式尝试多种不同的算法进行化简,以显示长度最短的符号表达式简化形式 |
3)替换
a. subexpr函数:subexpr(s,s1)
b. subs函数:subs(s)
subs(s,new)
subs(s,old ,new)
4)转换
a. 符号表达式与多项式的转换
sym2poly函数
poly2sym函数
b. 提取分子和分母
numden
· 符号极限、微分、级数求和
符号极限 |
limit函数 |
符号微分 |
diff函数 |
符号积分 |
int函数 |
符号级数求和 |
symsum函数 taylor函数 |
· 符号积分变换
傅里叶变换及反变换 |
fourier 与 ifourier |
拉普拉斯变换及反变换 |
laplace 与 ilaplace |
Z变换及反变换 |
ztrans 与 iztrans |
· 符号函数的可视化
ezplot和ezplot3函数
funtool
三、基本通信模型
压缩拆帧 DCT变换(频域上处理)
纠错去噪
信道编码 增加冗余
星座映射:比特流转为符号流
傅里叶变换将频谱划分成很多个子载波
逆傅里叶变换将子载波与符号流一一对应
加入保护间隔,使时延扩展不发生混叠
信号在传播过程中遇到障碍物会发生折射、反射、散射
离散信号升采样,频谱扩展
频谱搬移 上变频 双边带变换变成通带信号
欧拉分解 功率放大(基带信号到几千瓦)
成性失真和加性噪声 Y=HX+N
下变频 零中频
接收端将信号进行同步
电磁波是以正弦波形式传播(时域)
FFT变换
5G通信特点:使用超高频(毫米波和太赫兹)
频率越高,覆盖范围越小,传播效率越低
四、matlab的图形功能——绘图功能
- 基本二维绘图函数:plot(x,y,‘s’) s为可选属性
颜色(y;r;g;b;w;k:黑色;m:棕色;o:青色;)
+点型(s:方格;^:三角形;.:实心点;o:空心点;d:菱形;×;+)
+线型(-;-.:点划线;--:间断线;:虚线)
- 采样点对绘图的影响
- legend figure hold on title subplot(行,列,顺序) xlabel ylabel