Matlab datafun 函数

更新时间:2024-04-14 17:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

版本:matlab 2010a

Matlab datafun函数的相关用法

目录:

1.conv2............................................................................................ 2 2.conv.............................................................................................. 3 3.convn ........................................................................................... 4 4.corrcoef ....................................................................................... 4 5. cov ............................................................................................... 5 6. cumprod ..................................................................................... 6 7. cumsu ......................................................................................... 7 8. deconv ........................................................................................ 7 9. detrend ....................................................................................... 8 10. diff............................................................................................. 9 11. fft2 ............................................................................................. 9 12. fft............................................................................................. 11 13.fftshift ...................................................................................... 12 14. filter2 ...................................................................................... 12 15. filter ........................................................................................ 13 16. hist .......................................................................................... 13 17. histc......................................................................................... 14 18. ifft2 ......................................................................................... 16 19. issorted ................................................................................... 17 20. max ......................................................................................... 19 21. mean ....................................................................................... 20 22. median .................................................................................... 20 23. min .......................................................................................... 21 24. mode ....................................................................................... 22 25. prod ........................................................................................ 23 26. sort .......................................................................................... 24 27. sortrows .................................................................................. 26 28. std ........................................................................................... 27 29. sum ......................................................................................... 28 30. var ........................................................................................... 30

1.conv2

功能简介

进行二维卷积操作 使用方法

C=conv2(A,B)

C=conv2(Hcol,Hrow,A) C=conv2(...,'shape')

说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:

》full 为缺省值,返回二维卷积的全部结果;

》same 返回二维卷积结果中与 A 大小相同的中间部分;

valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。 应用举例A=magic(5) A=

17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

B=[1 2 1;0 2 0;3 1 3] B=

1 2 1 0 2 0 3 1 3

C=conv2(A,B) C=

17 58 66 34 32 38 15 23 85 88 35 67 76 16

55 149 117 163 159 135 67 79 78 160 161 187 129 51 23 82 153 199 205 108 75 30 68 135 168 91 84 9 33 65 126 85 104 15 27 相关函数 filter2

2.conv

函数功能

计算多项式的卷积和乘积 使用方法

w = conv(u,v)

计算向量u和v的卷积。在代数上,卷积是和多项式乘积相同的操作,该多项式的系数是向量u和v的元素。 C = conv(...,'shape')

用指定的参数shape返回卷积的一部分。 full 返回全部卷积(默认)。

same 返回和A大小相同的卷积中心部分。

valid 仅仅返回没有零填充边的那部分卷积,用此选项,max(length(a)-max(0,length(b)-1),0). 应用举例 例1

clear all; close all; clc;

%程序开始

P1=[3 2 0 0 1 7 10]; P2=[0 0 0 4 -2 1 1]; P=P1+P2 poly2sym(P) P=P1-P2 poly2sym(P) P=conv(P1,P2) poly2sym(P) P2=[4 -2 1 1]; P=deconv(P1,P2) poly2sym(P)

例2 求解乘积多项式展开之后各次项的系数: (x^2+x+1)*(x^2+2x+1) 输入命令,

>> p1=[1 1 1]; >> p2=[1 2 1]; >> p3=conv(p1,p2) p3 =

1 3 4 3 1

p3即为展开后依次数从高到低各项系数,展开式为: x^4+3x^3+4x^2+3x+1 相关函数

conv2,convn,deconv,filter

等于length(c)

3.convn

函数功能

进行n维卷积操作。 使用方法

C = convn(A,B)

计算数组A和B的N维卷积,卷积结果C的维数为size(A)+size(B)-1。 C = convn(A,B,'shape')

用指定的参数shape返回n维卷积的一部分。 full 返回全部n维卷积(默认)。

same 返回和A大小相同的卷积中心部分。

valid 仅仅返回没有零填充边的那部分卷积,用此选项,length(c) 等于max(size(a)-size(b)+1,0). 相关函数 conv, conv2

4.corrcoef

函数功能

计算相关系数 使用方法

R = corrcoef(X)

返回相关系数矩阵R,对行是观测值、列是变量的矩阵X计算相关系数得到相关系数矩阵R。

阵R=corrcoef(X)与协方差矩阵C=cov(X)有以下关系: 公式R = corrcoef(x,y)

如果x和y都是列向量,那么其功能和corrcoef([x y])是相同的。

如果x和y不是列向量,corrcoef函数转化他们为列向量,例如,在这种情况下R=corrcoef(x,y)是等价于R=corrcoef([x(:) y(:)])。 book.iLoveMatlab.cn [R,P]=corrcoef(...)

返回R,P,含有p值的矩阵是为了测试不相关性,每个p值是相关性的概率值,真正的相关性,p值应该为0。

如果p(i,j)很小的情况下,一般设置小于0.05,我们也认为相关系数R(i,j)也是有意义的。 [R,P,RLO,RUP]=corrcoef(...)

返回矩阵RLO 和RUP,它们是和R有相同的大小,对每个系数包含一个在95%置信区间的上下界。

[...]=corrcoef(...,'param1',val1,'param2',val2,...) 指定其他参数和它们的值,有效的参数如下:

'alpha' 是一个0到1之间的数,指定了100*(1 - alpha)%的置信水平,默认是0.05 相对于95%的置信区间。

'rows' 'all' (默认)作用于所有行,'complete'作用于没有非数(NaN)的行,'pairwise' 是计算R(i,j)用列i或者j中不是非数的值。 应用举例

生成随机数据其中第4列和其他列相关。

x = randn(30,4); % Uncorrelated data

x(:,4) = sum(x,2); % Introduce correlation.

[r,p] = corrcoef(x) % Compute sample correlation and p-values. [i,j] = find(p<0.05); % Find significant correlations. [i,j] % Display their (row,col) indices. r =

1.0000 -0.3566 0.1929 0.3457 -0.3566 1.0000 -0.1429 0.4461 0.1929 -0.1429 1.0000 0.5183 0.3457 0.4461 0.5183 1.0000 p =

1.0000 0.0531 0.3072 0.0613 0.0531 1.0000 0.4511 0.0135 0.3072 0.4511 1.0000 0.0033 0.0613 0.0135 0.0033 1.0000 ans = 4 2 4 3 2 4 3 4

相关函数

cov, mean, median, std, var

5. cov

函数功能

返回协方差矩阵 使用方法 cov(x)

如果x是一个向量,cov(x)返回x中元素的方差。

如果x是一个矩阵,并且是各行为观测值、各列为变量的矩阵,cov(x)计算x的协方差。diag(cov(X))是包含每列的方差的向量,sqrt(diag(cov(X)))是包含标准差的向量。当X和Y是大小相同的矩阵时,cov(X,Y)等价于cov([X(:) Y(:)])。

cov(x) 或 cov(x,y)

用N-1规范化如果N>1,其中N是观测值的个数。如果观测值属于正态分布,那么cov(x)可以达到协方差最好的无偏估计。如果N=1用N去规范化。 cov(x,1)或 cov(x,y,1) 《Simulink与信号处理》

用N来规范化,cov(X,Y,0)和cov(X,Y)是功能相同的,cov(X,0)和cov(X)是功能相同的。 备注

cov在计算结果前对每一列删除平均值。

协方差函数定义为:

其中E是数学期望并且有

应用举例

考虑A = [-1 1 2 ; -2 3 1 ; 4 0 3],对A每一列求方差: v = diag(cov(A))' v =

10.3333 2.3333 1.0000 比较v和协方差C: C=cov(A) C =

10.3333 -4.1667 3.0000 4.1667 2.3333 -1.5000 3.0000 -1.5000 1.0000

对角元素C(i,i)代表A中每一列的方差,非对角元素代表列i和列j的协方差。 相关函数

corrcoef, mean, median, std,var

6. cumprod

功能简介 累积乘积 使用方法

B = cumprod(A)

返回数组中的一维维度的累积乘积。

如果A是一个向量,cumprod(A) 返回一个向量包含A元素的累积乘积

如果A是一个矩阵,cumprod(A) 返回一个矩阵为包含相同的大小每列A的累积乘积。

如果A是一个多维数组,cumprod(A) 第一个 nonsingleton 维度的操作。 B = cumprod(A,dim)

returns the cumulative product of the elements along the dimension of A specified by scalar dim. For example, cumprod(A,1) increments the column index, thus working along the columns of A. Thus, cumprod(A,1) and cumprod(A) will return the same thing. To increment the row index, use cumprod(A,2). 应用举例

cumprod(1:5) ans =

1 2 6 24 120 www.iLoveMatlab.cn A = [1 2 3; 4 5 6]; cumprod(A,1) ans = 1 2 3 4 10 18

cumprod(A,2)

ans =

1 2 6 Ma 4 20 120 相关函数

cumsum, prod, sum

7. cumsu

功能简介 累积求和 使用方法

B = cumsum(A)

返回沿着不同维的累积求和。

如果A是一个向量,cumsum(A)返回一个向量包含A中元素的累积和。

如果A是一个矩阵,cumsum(A)返回一个和A相同大小的矩阵,其包含A中每一列元素的累积和。

如果A是一个多维数组,cumsum(A)对第一个非奇异维进行计算。 B = cumsum(A,dim)

沿着指定的维返回元素的累积和。例如,cumsum(A,1)沿着列方向计算;cumsum(A)沿着行方向计算。 应用举例

注明:该例子来自Mathworks公司英文帮助文件。 例一:计算向量的累积和 cumsum(1:5) ans =

[1 3 6 10 15]

例二:计算矩阵的累积和 已知:A = [1 2 3; 4 5 6]; cumsum(A,1) % 沿列方向计算 ans = 1 2 3 5 7 9

cumsum(A,2) % 沿行方向计算 ans = 1 3 6 4 9 15 相关函数

cumprod, prod, sum

8. deconv

函数功能

计算多项式的反卷积和除法 使用方法

[q,r] = deconv(v,u)

用多项式除法计算向量v和向量u的反卷积,把商在向量q中并返回,余数在向量r中有v=conv(u,q)+r。 如果向量u和v是多项式系数,则对它们进行卷积等价于两个多项式相乘,并且反卷积是等价于项式除法。v除以u的结果就是商q和余数r。 应用举例 若:

u = [1 2 3 4] v = [10 20 30] 卷积为:

c = conv(u,v) c =

10 40 100 160 170 120 除以u的反卷积: [q,r] = deconv(c,u) q =

10 20 30 r =

0 0 0 0 0 0

得到的商等于v和余数r。 相关函数

conv,residue

9. detrend

目录

函数功能

对数据去除趋势文论坛 使用说明

y = detrend(x)

对x进行线性拟合,然后去除线性趋势 y = detrend(x,'constant') 去掉常数趋势

y = detrend(x,'linear',bp)

对数据进行分段线性趋势去除,bp是分段点 应用举例

load predict_ret_data.mat % load data

sdata(any(isnan(sdata),2),:) = [] % eliminate nan type plot( sdata,'+')% draw the originaldata

detrend_sdata=detrend(sdata);% detrend_sdata denotes the detrended data plot(detrend_sdata,'-')

原始数据和去趋势之后的数据

相关函数

polyfit,regress,predict 高级使用 相关视频

10. diff

功能简介

对函数求导。文论坛 使用方法

diff(函数) ,求函数的一阶导数;

diff(函数, n) ,求函数的n阶导数(n是具体整数); diff(函数,变量名),求对变量的偏导数;

diff(函数, 变量名,n) ,求对变量的n阶偏导数;文论坛 应用举例 syms x

diff(x^sin(x)) ans=

x^sin(s)*(cos(s)*log(x)+sin(x)/x) 相关视频

11. fft2

目录

功能简介

二维离散傅立叶变换。 使用方法

1.Y = fft2(X)

利用快速傅立叶变换(FFT)算法进行计算,返回X的二维离散傅立叶变换(DFT)。Y和X的存储空间相同。 2.Y = fft2(X,m,n)

去零或加零,将数组X扩展为M*N维数组,然后做离散傅立叶变换,结果也是

M*N维的数组。 【算法】

fft2(x)可以按如下方法简单计算:fft(fft(X).').'。首先计算每列X的一维DFT,然后计算上述结果的每行的DFT。计算时间取决于变换的长度。用户可以使用fftw来提高fft2的运算速度,fftw可以控制MATLAB软件如何优化用于计算特定大小和维数的FFT的算法。 【支持的数据类型】

fft2函数支持dougle和single数据类型。如果使用Y=fft2(X,...)格式来调用fft2函数,则其输出Y的数据类型与输入X的数据类型相同。 应用举例

Load imdemos saturn2 imshow(saturn2)

1

B=fftshift(fft2(saturn2));

imshow(log(abs(B)),[]),colormap(jet(64)),colorbar

2

相关函数

dct2,fftshift, idct2, ifft2 高级使用

相关视频

12. fft

fft离散傅里叶变换 句法

Y = fft(X) Y = fft(X,n)

Y = fft(X,[],dim) Y = fft(X,n,dim)

n为离散傅里叶变换的点数,如果取n为2的幂函数,则可进行快速傅里叶变换。当x的长度小于n时,x会被补零填充到与n同样的长度;当x的长度大于n时,x会被截断。如果x是个矩阵,列的长度将会以同样的方式调整,fft会对每列进行傅里叶变换,并返回一个相同维数的矩阵。 dim可适应于任意维度的fft运算。 运用举例

常用例子举例

常用的傅立叶变换是找到在嘈杂的时域信号下掩埋了信号的频率成分。考虑数据采样在1000赫兹。现有一信号由以下部分组成,50赫兹振幅为0.7的正弦和120赫兹振幅为1的正弦并且受到一些零均值的随机噪声的污染: Fs = 1000; % 采样频率 T = 1/Fs; % 采样时间 L = 1000; % 信号长度

t = (0:L-1)*T; % 时间矢量

% 50赫兹正弦波与120赫兹正弦波的和

x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); y = x + 2*randn(size(t)); % 正弦波加噪声 plot(Fs*t(1:50),y(1:50)) %画此信号的时域图

title('Signal Corrupted with Zero-Mean Random Noise') xlabel('time (milliseconds)')

这在寻找原始信号的频率成分上是很难确定的。转换到频域,噪音信号Y的傅立叶变换采取快速傅立叶变换(FFT):

NFFT = 2^nextpow2(L); %y长度L附近的2的幂级数 Y = fft(y,NFFT)/L;

f = Fs/2*linspace(0,1,NFFT/2+1); % 单边拉普拉斯变换 plot(f,2*abs(Y(1:NFFT/2+1))) %画单边频谱图

title('Single-Sided Amplitude Spectrum of y(t)') xlabel('Frequency (Hz)') ylabel('|Y(f)|')

这样就可以很清楚的看到,信号在50Hz和120Hz处有较大的频谱分布,其余频谱分布是由于噪声造成的。 相关函数

与fft相关的函数:

fft2, fftn, fftw, fftshift, ifft

dftmtx, filter, freqz 在信号处理工具箱

13.fftshift

功能简介

把快速傅里叶变换的DC组件移到光谱中心。 使用方法

B=fftshift(A) 应用举例 B=fftn(A);

C=fftshift(B); 相关函数

fft2,fftn,ifftshift

14. filter2

功能简介

计算二维线型数字滤波,它与函数 fspecial 连用 使用方法

Y=filter2(B,X)

Y=filter2(B,X,'shape') 说明:对于 Y=filter2(B,X) ,filter2 使用矩阵 B 中的二维 FIR 滤波器对数据 X 进行滤波,结果 Y 是通过二维互相关计算出来的,其大小与 X 一样;对于 Y=filter2(B,X,'shape') ,filter2 返回的 Y 是通过二维互相关计算出来的,其大小由参数 shape 确定,其取值如下:

》full 返回二维相关的全部结果,size(Y)>size(X);

》same 返回二维互相关结果的中间部分,Y 与 X 大小相同; 》valid 返回在二维互相关过程中,未使用边缘补 0 部分进行计算的结果部分,有 size(Y) 应用举例 A= magic(6) A=

35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 h=fspecial('sobel') h=

1 2 1 0 0 0 1 2 1

B=filter2(h,A,'valid') B=

8 4 4 8 23 44 5 40

23 50 1 40 8 4 4¨8 相关函数

conv2, roifilt2

15. filter

功能介绍

FILTER是一维数字滤波器 使用方法

Y = FILTER(B,A,X) ,输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母 整个滤波过程是通过下面差分方程实现的: a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1) - ... - a(na+1)*y(n-na) [Y,Zf] = FILTER(B,A,X,Zi),输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母,

并输入Zi指定X的初始状态,Zf为最终状态矢量

FILTER(B,A,X,[],DIM) 或 FILTER(B,A,X,Zi,DIM)指定X的维数DIM进行操作 举例

k=-100:100;

>> uk=[zeros(1,100),ones(1,101)]; >> a=[1 -5 6]; >> b=[2 -1]; >> x=uk;

>> y=filter(b,a,x)

16. hist

功能简介 绘制直方图 版本支持 MATLAB7.9 使用方法

直方图表现出数据的分布情形。 n = hist(Y)

输入:Y——输入数据矩阵 输出:n——每组的数据个数

注:具体做法为将Y平均分成10组,n用于统计每一组的数据个数。如果Y为矩阵,则对Y的每一列分别分组操作,得到的n为10*p的矩阵。 n = hist(Y,x)

输入:Y——输入数据矩阵、x——分组向量 输出:n——每组的数据个数 n = hist(Y,nbins)

输入:Y——输入数据矩阵、nbins——分组个数

输出:n——每组的数据个数

[n,xout] = hist(...) 《信号处理》

输出:n——每组的数据个数、xout——分组内容 注:可通过bar(xout,n) 来绘制直方图 应用举例

clc; clear all; close all; x = -4:0.1:4;

y = randn(10000, 1); hist(y, x);

h = findobj(gca,'Type','patch');

set(h, 'FaceColor', 'r', 'EdgeColor', 'w');

图1.1 hist实例

相关函数

bar, ColorSpec, histc, mode,patch, rose, stairs 相关视频

17. histc

功能简介

查询柱状图数目。 使用方法

n=histc(x,edges)

计算向量x中落入到边缘向量(它必须包含单调非增值)的元素之间的值的个数。n是一个长度为length(edges)的向量,包含这些个数。

如果edges(k)<=x(i)

对于矩阵,histc(x,deges)返回一个列柱状图数目的矩阵;对于N维数组,histc(x,edges)沿第一个非单一维进行操作。 n=histc(x,edges,dim) 沿第dim维进行操作. [n,bin]=histc(...)

返回一个指标矩阵区段。如果x是个向量,则n(k)=sum(bin==k).如果x是一个M*N的矩阵,则

for j=1:N, www.iLoveMatlab.cn n(k,j)=sum(bin(:,j)==k); end

为绘制柱状图,使用bar命令。 应用举例

x=-2.9:0.1:2.9;

y=randn(10000,1); figure(1),hist(y,x)

图1

>> n_elements=histc(y,x);

>> c_elements=cumsum(n_elements) c_elements = 4 11 21 29 50 73 107 149 193 262 326 425 519 653 790 945 1121 1318 1542 1788 2082 2376 2695 3054 3425 3803 4173 4576 4949 5355 5755 6165

6579 6940 7300 7644 7923 8189 8426 8672 8872 9052 9198 9318 9432 9533 9623 9694 9755 9802 9833 9865 9898 9919 9931 9945 9957 9961 9961

>> figure(2),bar(x,c_elements)

图2

相关函数

hist,mode,Specialized Plotting 相关视频

18. ifft2

功能简介

二维离散傅立叶逆变换 版本支持 MATLAB7.9

使用方法

Y = ifft2(X)

输入:X——输入二维矩阵

输出:Y——X的逆傅里叶变换矩阵

注:使用傅里叶转换算法(FFT),Y和X的维数相同。iff2首先判断X是否为共轭对称,如果是,则计算更加快速且输出为实数。 Y = ifft2(X,m,n)

输入:X——输入二维矩阵、m&n——傅里叶变换维数 输出:Y——X的逆傅里叶变换矩阵 y = ifft2(..., 'symmetric')

输入:'symmetric'——将X视为共轭对称,一般对由于舍入误差导致的非共轭对称有效

y = ifft2(..., 'nonsymmetric')号处理》 输入:'nonsymmetric'——将X视为非共轭对称 应用举例

clc; clear all; close all; I = imread('cameraman.tif');

gfilt = fspecial('gaussian', [256 256], 4); % 高斯模板 gfiltfft = fft2(gfilt); imfft = fft2(I); % fft变换

imfft1 = fftshift(abs(imfft)); % 幅值

imfft2 = fftshift(log(abs(imfft)+eps)); % log出来 newimfft = imfft.*gfiltfft; % 滤波

newim = fftshift(real(ifft2(newimfft))); % 反求 figure;

subplot(1, 2, 1); imshow(I, []); title('原图像');

subplot(1, 2, 2); imshow(newim, []); title('滤波图像');

图1.1 ifft2的滤波

相关函数

fft2, fftw, fftshift, ifft, ifftn, ifftshift

19. issorted

函数功能

判断集合中的元素是否按序排列 使用方法

TF = issorted(A)

如果集合A中的元素已经排序,则返回逻辑值1(真),否则返回逻辑值0(假)。

输入A可以为一个向量或为一个N*1或1*N的元胞字符数组,如果A和sort(A)的输出相等,则认为A已经排序。 TF = issorted(A, 'rows')

如果二维矩阵A中每一行的元素已经排序,则返回逻辑值1(真),否则返回逻辑值0(假)。

输入A可以为一个向量或为一个N*1或1*N的元胞字符数组。 如果A和sortrows(A)的输出相等,则认为矩阵A已经排序。 备注

对于字符数组,issorted用ASCII而不是按字母顺序排列。 不能用issorted函数排列维数大于2的数组。 应用举例

例1--用issorted排列向量

A = [5 12 33 39 78 90 95 107 128 131]; issorted(A) ans =

例2--用issorted排列矩阵 A = magic(5) A =

17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 issorted(A, 'rows') ans = 0

B = sortrows(A) B =

4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 17 24 1 8 15 23 5 7 14 16 issorted(B) ans = 1

例2--用issorted排列元胞数组

x = {'one'; 'two'; 'three'; 'four'; 'five'}; issorted(x) ans = 0

y = sort(x) y = 'five' 'four'

'one' 'three' 'two'

issorted(y) ans = 1

相关函数sort, sortrows, ismember, unique, intersect, union, setdiff, setxor, is*

20. max

函数功能

找出数组中的最大元素 使用方法 C = max(A)

返回数组A不同维数的最大值。

如果A是一个向量时,max(A)返回向量的最大值;

如果A为一个矩阵时,max(A)把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的最大值的行向量。

如果A是一个多维矩阵时,max(A)把矩阵中的第一个非单一维部分看成一个向量,返回每个向量的最大值。 C = max(A,B)

返回A和B中对应位置的最大元素,C的大小与A和B一致,A和B的维数必须一致或者都是标量。 C = max(A,[],dim)

返回A中沿着由标量dim指定维数的最大元素,比如,max(A,[],1)返回A中第一维(行)的最大值。 [C,I] = max(...)

找出A中最大元素及其索引,把最大值返回给C,最大值索引返回给I。 如果有几个相同的最大值,那么返回第一个被发现的索引。 备注

对于复数数组A,max返回具有最大复数模的复数,按max(abs(A))计算。 如果需要再计算最大相位角用max(angle(x))。 max函数忽略非数(NaNs). 应用举例

X=[2 8 4;7 3 9];

max(X,[],1) is [7 8 9] (返回的是每一列的最大值,也就是一个行向量) max(X,[],2) is [8;9] (返回的是每一行的最大值,也就是一个列向量) X=[1 5;2 6]; Y=[3 4;3 4];

Z=max(X,Y)(返回两个矩阵当中对应的最大值的矩阵,且两个矩阵X,Y是相同维度) Z = 3 5 3 6

相关函数

isnan, mean, median,min, sort

21. mean

函数功能

求数组的平均数或者均值 使用方法 M = mean(A)

返回沿数组中不同维的元素的平均值。

如果A是一个向量,mean(A)返回A中元素的平均值。

如果A是一个矩阵,mean(A)将中的各列视为向量,把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的平均值的行向量。

如果A是一个多元数组,mean(A)将数组中第一个非单一维的值看成一个向量,返回每个向量的平均值。 M = mean(A,dim)

返回A中沿着标量dim指定的维数上的元素的平均值。对于矩阵,mean(A,2)就是包含每一行的平均值的列向量。 应用举例

A = [1 2 3; 3 3 6; 4 6 8; 4 7 7]; mean(A) ans =

3.0000 4.5000 6.0000 mean(A,2) ans = 2.0000 4.0000 6.0000 6.0000 相关函数

corrcoef, cov, max, median, min, mode, std, var

22. median

函数功能

求数组的中位数 使用方法

M = median(A)

返回数组A不同维数元素的中位数,数组A应该是single 或者double数据类型。

如果A是一个向量,median(A)返回A中元素的中位数。

如果A是一个矩阵,median(A)将A的各列视为向量,返回一个包含各列向量元素中位数的行向量。 如果A是一个多元数组,median(A)将数组中第一个非单一维的值看成一个向量,

返回每个向量的中位数。 M = median(A,dim)

返回A中沿着标量dim指定的维数上计算元素的中位数。 应用举例

A = [1 2 4 4; 3 4 6 6; 5 6 8 8; 5 6 8 8]; median(A) ans = 4 5 7 7 median(A,2) ans = 3 5 7 7

相关函数 corrcoef, cov, max,mean, min,mode, std, var

23. min

函数功能

找出数组中的最小元素 使用方法 C = min(A)

返回数组A不同维数的最小值。

如果A是一个向量时,min(A)返回向量的最小值;

如果A为一个矩阵时,min(A)把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的最小值的行向量。

如果A是一个多维数组时,min(A)把矩阵中的第一个非单一维部分看成一个向量,返回每个向量的最小值。 C = min(A,B)

返回A和B中对应位置的最小元素,C的大小与A和B一致,A和B的维数必须一致或者都是标量。 C = min(A,[],dim)

返回A中沿着由标量dim指定维数的最小元素,比如,min(A,[],1)返回A中第一维(行)的最小值。 [C,I] =min(...)

找出A中最小元素及其索引,把最小值返回给C,最小值索引返回给I。 如果有几个相同的最小值,那么返回第一个被发现的索引。 备注

对于复数数组A,min返回具有最小复数模的复数,按min(abs(A))计算。 如果需要再计算最小相位角用min(angle(x))。 min函数忽略非数(NaNs). 应用举例

X=[2 8 4;7 3 9];

min(X,[],1) is [2 3 4] (返回的是每一列的最小值,也就是一个行向量) min(X,[],2) is [2;3] (返回的是每一行的最小值,也就是一个列向量)

X=[1 5;2 6]; Y=[3 4;3 4]; Z=min(X,Y) (返回两个矩阵当中对应的最小值的矩阵,且两个矩阵X,Y是相同维度) Z = 1 4 2 4

相关函数

max,mean, median, sort

24. mode

函数功能

求数组中出现频率最多的值 使用方法 M = mode(X)

计算向量X的重复频率M(例如在X中的最大频率发生值)。如果X是一个矩阵,则M是包含每列的频率最大值的行向量。如果X是一个N维数组,则M沿数组中第一个非一维的频率最大的值。

当有多个值有相等的频率时,mode返回这个最小的值。 对于复数输入,返回的是排序中第一个值。 M = mode(X, dim)

沿着指定的维数dim计算X出现频率最多的值。 [M,F] = mode(X, ...)

同时也返回数组F,其元素代表X中对应元素出现的次数。输出数组M和F有相等的大小。[M,F,C] = mode(X, ...)

同时又返回元胞数组C,其元素是M中元素有相同频率的值升序排列的向量。三个输出数组M、F和C有相同大小的。 应用举例

例1 发现3*4矩阵中出现频率最多的值: X = [3 3 1 4; 0 0 1 1; 0 1 2 4] X =

3 3 1 4 0 0 1 1 0 1 2 4 mode(X) ans = 0 0 1 4

沿着第二维寻找出现频率最多的值: mode(X, 2) ans = 3 0 0

例2 randn('state', 0); % Reset the random number generator

y = randn(1000,1); edges = -6:.25:6;

[n,bin] = histc(y,edges); m = mode(bin) m = 22

edges([m, m+1]) ans =

-0.7500 -0.5000 hist(y,edges+.125)

直方图

相关函数mean,median,hist,histc

25. prod

功能简介

计算数组元素的乘积 版本支持

Matlab6.5(含)以后,全部支持。 使用方法 B = prod(A)

将A矩阵不同维的元素的乘积返回到矩阵B。 Matlab中文论坛 如果A是向量,prod(A)返回A向量的乘积。

如果A是矩阵,prod(A)将A看作列向量,返回每一列元素的乘积并组成一个行向量B。

如果A是多维数组,prod(A)沿着第一个非单例作为向量,返回一个行向量数组。 B = prod(A,dim)

沿着指定的dim标量的维计算A矩阵的乘积。注:dim=2表示沿行计算。 应用举例 已知矩阵A: M = magic(3) M = 8 1 6 3 5 7 4 9 2

例一:计算矩阵A的每一列元素的乘积 prod(M) = 96 45 84

例二:计算矩阵A每一行元素的乘积, dim=2表示按行计算 prod(M,2) =

48 105 72

相关函数

cumprod,diff, sum 高级使用 相关视频

26. sort

函数功能

把数组元素按升序或降序排列 使用方法 B = sort(A)

把数组A沿不同维度上的元素按照升序排列。

如果A是向量,sort(A) 对A中元素按照升序排列。

如果A是矩阵,sort(A) 对A按每一列元素按照升序排列。 如果A是多维数组,sort(A) 对沿着第一非单元集的元素像向量一样处理并返回一个升序排列的向量数组。

如果A是字符串元胞数组,sort(A) 按照ASCII字典对字符串进行升序排列,对元胞数组不能使用dim或mode参数。

整型,浮点型,逻辑型和字符型数组是允许的,浮点型数组可以是复数数组。 对于A中相同的元素,则按照其在A中的先后位置排列在一起;

若A为复数,则按元素幅值按升序排列,若幅值相同的复数,则按照在区间[-pi,pi]的幅角升序排列。

如A中有非数NAN元素,则将他们排列到最后。 B = sort(A,dim)

按数组A中指定维度dim上的元素按照升序排列。 B = sort(...,mode)

按照mode的值为指定的方向进行排列,mode可取: 'ascend' 升序排列(默认)。 'descend' 降序排列。 [B,IX] = sort(A,...)

返回索引数组IX,其大小为size(IX) == size(A)。 若A是一个向量,B = A(IX)。

若A是一个m*n的矩阵,则IX的每一列是与A中列向量的元素相对应的置换向量。

for j = 1:n

B(:,j) = A(IX(:,j),j); End

若A中有重复出现的相等的值,则返回原来相对位置的索引。 排列复数项

如果数组A有复数项r和s,sort排列他们按照以下规则:若满足以下任何一个条件,r将sort(A)中排在s前面:abs(r) < abs(s) abs(r) = abs(s) 并angle(r) 其中-pi例子:

v = [1 -1 i -i]; angle(v) ans =

0 3.1416 1.5708 -1.5708 sort(v) ans =

0- 1.0000i 1.0000 0 + 1.0000i -1.0000

应用举例

举例(一)在每一维排列矩阵A,然后第三次排列它,返回排列结果的索引矩阵: A = [3 7 5 0 4 2 ]; sort(A,1) ans = 0 4 2 3 7 5

sort(A,2) ans = 3 5 7 0 2 4

[B,IX] = sort(A,2) B = 3 5 7 0 2 4 IX = 1 3 2 1 3 2

举例(二)按照降序排列每一列. A = [3 7 5 6 8 3 0 4 2];

sort(A,1,'descend') ans = 6 8 5 3 7 3 0 4 2 等价于

sort(A,'descend') ans = 6 8 5 3 7 3

0 4 2号处理》

相关函数issorted, max, mean, median, min, sortrows, unique

27. sortrows

函数功能

数组的行按照升序排列 使用方法

B = sortrows(A)

把A中的每一行按照升序排列,A必须是一个矩阵或列向量。 对于字符串,按照ASCII字典对字符串进行排列. 若A为复数,则按元素幅值进行排列,若幅值相同的复数,则按照在区间[-pi,pi]的幅角进行排列。

B = sortrows(A,column)

用指定的向量column对矩阵A进行按列排序,如果column的元素是正的,MATLAB对矩阵A相应的列进行升序排列,如果column的元素是负的,MATLAB对矩阵A相应的列进行降序排列。例如,sortrows(A,[2 -3]) 先对矩阵A第二列的每行按升序排列,然后对第三列按降序排列。 [B,index] = sortrows(A,...) 返回索引向量index。

若A是一个向量,则B = A(index)。

若A是一个m*n的矩阵,则B = A(index,:)。 应用举例 任意矩阵A:

A=floor(gallery('uniformdata',[6 7],0)*100); A(1:4,1)=95; A(5:6,1)=76; A(2:4,2)=7; A(3,3)=73 A =

95 45 92 41 13 1 84 95 7 73 89 20 74 52 95 7 73 5 19 44 20 95 7 40 35 60 93 67 76 61 93 81 27 46 83 76 79 91 0 19 41 1

当只有一个输入参数时,sortrows函数是基于矩阵第一列排序的。对于特殊的列(e.g., 例子中的矩阵A(1:4,1))上一些行有相同元素 ,对右侧的列基于前一列排列 (A(1:4,2) in this case): B = sortrows(A) B =

76 61 93 81 27 46 83 76 79 91 0 19 41 1 95 7 40 35 60 93 67 95 7 73 5 19 44 20 95 7 73 89 20 74 52 95 45 92 41 13 1 84

当有二个输入参数时,sortrows函数是基于矩阵指定的列排序的。在指定的列有相等的行(e.g., A(2:4,:),如果用第二列排序矩阵A)留在原来的顺序: C = sortrows(A,2) C =

95 7 73 89 20 74 52 95 7 73 5 19 44 20 95 7 40 35 60 93 67 95 45 92 41 13 1 84 76 61 93 81 27 46 83 76 79 91 0 19 41 1

此例指定两列去排序:列1和7。sortrows先按列1排序,在列1中相等的值按列7排序。D = sortrows(A,[1 7]) D =

76 79 91 0 19 41 1 76 61 93 81 27 46 83 95 7 73 5 19 44 20 95 7 73 89 20 74 52 95 7 40 35 60 93 67 95 45 92 41 13 1 84

指定第四列按照相反的顺序对矩阵排序: E = sortrows(A, -4) E =

95 7 73 89 20 74 52 76 61 93 81 27 46 83 95 45 92 41 13 1 84 95 7 40 35 60 93 67 95 7 73 5 19 44 20 76 79 91 0 19 41 1 相关函数issorted,sort

28. std

函数功能 计算标准差 定义公式

里给出在教科书中两种常见的关于数据向量X的标准差s的定义。 其中

计算公式

n是元素的个数,上面两个等式的不同仅仅在于被除数,一个是n,一个是n-1。

均值

使用方法 s = std(X)

如果X是一个向量,用上面公式(1)返回标准差。 结果s是数据X分布的无偏估计方差的平方根,只要数据X是有独立同分布样本组成。

如果X是一个矩阵,std(X)返回一个包含每一列所有元素的标准差的行向量。 如果A是一个多元数组,std(X)将沿着数组X中第一个非单一维的值来计算标准差。

s = std(X,flag)

若flag = 0,这个命令和s = std(X)功能相同。 若flag = 1,std(X,1)用上面公式2来计算标准差。 s = std(X,flag,dim)

用指定的标量dim沿着数据X的维数来计算标准差,设置flag为0用n-1去标准化X,设置flag为1用n去标准化。 应用举例 对于矩阵X X =

1 5 9 7 15 22

s = std(X,0,1) s =

4.2426 7.0711 9.1924 s = std(X,0,2) s = 4.000 7.5056

相关函数corrcoef, cov, mean, median, var

29. sum

函数功能

求数组元素的总和 使用方法 B = sum(A)

返回数组A不同维数的总和。

如果A是一个向量,sum(A) 返回所有元素的总和。

如果A是一个矩阵,sum(A) 把A的列作为向量,返回一个包含每一列所有元素的总和的行向量。

如果A是一个多维数组,sum(A) 把没一维看做一个数组,返回一个行向量数组。 B = sum(A,dim)

沿着A的每一维计算总和用指定标量dim,dim是一个从1到N 的整数值,其中

N是A的维数。

dim为1就是计算A的每一列的总和,2计算A的每一行的总和,以此类推。 B = sum(..., 'double')和B = sum(..., dim,'double')

在双精度下(double)执行相加求和,返回double类型的结果,即使A是single数据类型或者integer数据类型。 默认的是integer数据类型。

B = sum(..., 'native')和B = sum(..., dim,'native')

在native数据类型下执行相加求和,返回相同类型的结果,默认的是single和double.数据类型。 备注

sum(diag(X)) 是求X的迹。 应用举例

三阶幻方为: M = magic(3) M = 8 1 6 3 5 7 4 9 2

因为三阶幻方每一列元素总和是相同的。 sum(M) = 15 15 15

想求每一行元素的的总和,可以用转置或者用dim参数。 转置: sum(M') = 15 15 15

用dim参数: sum(M,1) ans = 15 15 15

支持非double数据类型

sum函数不仅仅支持double类型数据。 single数据类型:

sum函数可以应用到single数据类型并返回一个single类型的结果。比如: sum(single([2 5 8])) ans = 15

class(ans) ans = single

Integer数据类型

sum函数应用到以下Integer数据类型时,MATLAB软件返回一个double数据类型的结果:

int8 and uint8 int16 and uint16 int32 and uint32

例如:

sum(single([2 5 8])); class(ans) ans = single

sum([2 5 8]); class(ans) ans = double

如果你想MATLAB对Integer数据类型的结果是相同的Integer数据类型,可以用:sum(int8([2 5 8], 'native'); class(ans) ans = int8

相关函数 accumarray,cumsum, diff, isfloat, prod

30. var

函数功能 计算方差 使用方法 V = var(X)

如果X是一个向量,返回向量X的方差。

如果X是一个矩阵,var(X)返回一个包含矩阵X每一列方差的行向量。 如果X是一个N维数组,var沿着第一个X的非单一维进行操作。 只要X是独立同分布的,结果V是X分布的总体方差的无偏估计。 当N>1时,var由N-1来标准化,其中N是样本大小。

只要样本是独立同分布的,它就是X分布的总体方差的无偏估计。对N=1来说,v由N来标准化。 V = var(X,1)

由N来标准化,并且生成了样本关于其均值的二阶矩,var(X,0)等价于var(X)。 V = var(X,w)

计算向量X的方差利用权重向量w,向量w中元素的数目必须和X中的列的数目相同,向量w中的元素必须全是正数。var归一化w是的总和为1。 V = var(X,w,dim)

沿着指定维数dim求X的方差,默认用N-1标准化这时w为0,w为1时用N标准化。方差是其标准差(STD)的平方. 应用举例

x=[4,6,4,3,5,7] var(x)

ans =2.1667

相关函数 corrcoef, cov, mean,median, std

本文来源:https://www.bwwdw.com/article/hmlp.html

Top