对自己日常仿真中出现的比较生疏,或者容易遗忘的MATLAB函数进行了总结,回来查阅或是记忆一下想来也是不错的。
Ctrl+F用起来!
1.sort函数——排序函数
1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序.
A=\[1,5,3\],则sort(A)=\[1,3,5\]
A=\[1,5,3;2,4,1\],则sort(A)=\[1,4,1;2,5,3\]
(2)B=sort(A,dim),对数组按指定方向进行升序排序,
dim =1,表示对每一列进行排序,,dim=2表示对每一行进行排序.
(3)B=sort(A,dim,mode),mode为指定排序模式,mode为”ascend”时,进行升序排序,为”descend “时,进行降序排序.
(4)Matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中A为待排序的向量;若欲保留排列前的索引,则可用 [sA,index] = sort(A) ,排序后,sA是排序好的向量,index 是 向量sA 中对 A 的索引。 索引使排列逆运算成为可能。
2.rand函数——生成均匀分布随机矩阵
Y=rand(m,n):生成m*n随机矩阵,值在0到1之间
3.mapminmax函数——归一化函数
x1 = [1 2 4],
[y,ps] = mapminmax(x1)
y = -1.0000 -0.3333 1.0000
ps = name: 'mapminmax' xrows: 1 xmax: 4 xmin: 1
xrange: 3 yrows: 1 ymax: 1 ymin: -1 yrange: 2
其中y是对进行某种规范化后得到的数据,这种规范化的映射记录在结构体ps中.
y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin
y2 = mapminmax('apply',x2,ps);
%对x2采用同样的归一化方案
X = mapminmax('reverse',Y,PS);
%反归一化
5.matlab中./与/有什么区别
点运算是处理的元素之间的运算,而直接的/在矩阵计算中只能处理符合矩阵运算法则的运算。比如作图时的运算用的都是点运算。在对数值计算时,“./”和“/”其实是没有区别的。
例如对于矩阵A=[a b c d],1./A=[1/a 1/b 1/c 1/d]
,而1/A表示的是A的逆
7.hist函数——二维条形直方图
8.sum函数
sum()是matlab中的求和函数,sum(A,n)表示将矩阵A沿着第n个维度求和。所以:
sum(A,1)表示沿着A的第一个维度求和,如果A是二维矩阵,也就是按列求和,结果是一个行向量
示例如下:
A = magic(3)
A =
8 1 6
3 5 7
4 9 2
s = sum(A,1)
s =
15 15 15
9.plot函数和legend函数——画图
http://blog.sina.com.cn/s/blog_7dcfa8ea0100tvnf.html
10.hist函数——直方图绘制
N = hist(Y,X)
where X is a vector, returns the distribution of Y among bins with centers specified by X.(X是向量,以X中的元素为区间中心可获得一系列区间,执行命令可获得Y在这些区间中的分布情况。)
11.max函数——最大值
[C,I]=max(a)
C表示的是矩阵a每列的最大值,I表示的是每个最大值对应的下标:
下面举例说明:a=[1,2,3;4,5,6] [C,I]=max(a)
结果显示的是:C=[4,5,6] I=[2,2,2]
返回的是最大值对应的行号。
12.对角线相加
sum(diag(X))
13. .*
和./
的用法
普通的乘.
除/
对于矩阵来说都是前面的列向量等于后面的行向量,而.*
和./
则是说两个矩阵的行列向量数目要对应相等,对应的数乘或除对应的数,得到的仍然是相同行列矩阵数的矩阵。
14.randi函数——生成均匀分布的伪随机整数
范围为imin–imax,如果没指定imin,则默认为1。
r = randi(imax,n):生成n*n的矩阵
r = randi(imax,m,n):生成m*n的矩阵
r = randi(imax,\[m,n\]):同上
15.reshape函数——重新排列矩阵
B = reshape(A,m,n)
返回一个m*n的矩阵B, B中元素是按列从A中得到的。
16.eye函数——生成单位矩阵
Y = eye(m,n) or eye([m n])
对角线是1,其他是0。
17.awgn函数——加入高斯白噪声
AWGN
:在某一信号中加入高斯白噪声
y = awgn(x,SNR)
在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。
y = awgn(x,SNR,SIGPOWER)
如果SIGPOWER
是数值,则其代表以dBW为单位的信号强度;如果SIGPOWER
为'measured'
,则函数将在加入噪声之前测定信号强度。
y = awgn(x,SNR,SIGPOWER,STATE)
重置RANDN
的状态。
y = awgn(…,POWERTYPE)
指定SNR和SIGPOWER的单位。POWERTYPE
可以是’dB’或’linear’。如果POWERTYPE
是'dB'
,那么SNR以dB为单位,而SIGPOWER
以dBW为单位。如果POWERTYPE
是'linear'
,那么SNR作为比值来度量,而SIGPOWER
以瓦特为单位。
注释
1). 分贝(decibel, dB):分贝(dB)是表示相对功率或幅度电平的标准单位,换句话说,就是我们用来表示两个能量之间的差别的一种表示单位,它不是一个绝对单位。例如,电子系统中将电压、电流、功率等物理量的强弱通称为电平,电平的单位通常就以分贝表示,即事先取一个电压或电流作为参考值(0dB),用待表示的量与参考值之比取对数,再乘以20作为电平的分贝数(功率的电平值改乘10)。
2). 分贝瓦(dBW, dB Watt):指以1W的输出功率为基准时,用分贝来测量的功率放大器的功率值。
3). dBm (dB-milliWatt):即与1milliWatt(毫瓦)作比较得出的数字。
0 dBm = 1 mW
10 dBm = 10 mW
20 dBm = 100 mW
18.tic和toc——记录程序运行时间
tic用来保存当前时间,而后使用toc来记录程序完成时间。
两者往往结合使用,用法如下:
tic
operations
toc
显示时间单位:秒。
19.find——寻找非零元素的位置
19.sub2ind——寻找特定位置的索引
在命令窗口输入:
>> A=[4 7 2 9 8;3 9 1 4 3;1 5 9 6 4;8 3 7 1 0]
A =
4 7 2 9 8
3 9 1 4 3
1 5 9 6 4
8 3 7 1 0
则A中每个元素对应的索引如下(MATLAB中数据是按列的方式存储的):
1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20
ind=sub2ind(siz,I,J):siz表示要转换的矩阵的行列数,I是要转换矩阵的行标,J是要转换矩阵的列标。I,J的行列数必须相同。ind为输出参数,其行列数与I,J相同。ind即为索引。
在命令窗口中输入:
>> ind=sub2ind(size(A),[1,2;3,4],[1,1;2,2])
则显示
ind =
1 2
7 8
从运算结果可以看出,在矩阵A中,下标(1,1)的索引值为1,下标(2,1)的索引值为2,下标(3,2)的索引值为7,下标(4,2)的索引值为8
20.mod函数——求模数