Matlab函数

本文详细介绍了MATLAB中矩阵操作的各种方法,包括求最大值、矩阵复制、欧式距离计算、求平均值、矩阵尺寸获取等功能函数的应用场景及实例。此外还讲解了如何找到矩阵中的非零元素及其索引,以及矩阵形状的重塑方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MAX:

当A是一个列向量时候,返回一个最大值,在此不在赘述。

当Amxn是一个矩阵的时候,有以下几种情况:

①   C = max(max(A)),返回矩阵最大值

②   D = max(A,[],1),返回每一行的最大值,即mx1的行向量

③   E = max(A,[],2),返回每一列的最大值,即1xm的列向量

④   F = max(A,8),当元素小于8,用8填充

⑤   [U V] = max(A),返回行列最大元素的行号与列号

注意以下几个表达式:

H = max(A)

I = max(A(:))

J = max(A(:,:)) 

 

编程实验如下:

A = fix (rand (5,3)*50)%

B = A;%矩阵备份一次

C = max(max(A))%矩阵最值

D = max(A,[],1)%每一列的最值,得到行向量

E = max(A,[],2)%每一行的最值,得到列向量

F = max(A,8)%小于8的数替换成8

[U V] = max(A)%U为列极值,V为行号

H = max(A)%功能同D

I = max(A(:))%功能同C

J = max(A(:,:))%功能同D 

 

结果输出:

A =

    37    47    42

    12    27    12

    25     8    40

    34     8    12

    44    12    46

C =    47

D =    44    47    46

E =

    47

    27

    40

    34

    46

F =

    37    47    42

    12    27    12

    25     6    40

    34     7    12

    44    12    46

U =    44    47    46

V =     5     1     5

H =    44    47    46

I =    47

J =    44    47    46

------------------------------------------------------------------------------------------------------------------------

repmat

B = repmat(A,m,n)
B = repmat(A,[m n])
B = repmat(A,[m n p...])

这是一个处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(MxN)的矩阵B中,B矩阵的大小由MxN及A矩阵的内容决定,如果A是一个3x4x5的矩阵,有B = repmat(A,2,3)则最后的矩阵是6x12x5

例如:
>>B=repmat( [1 2;3 4],2,3)
B = 

1      2      1     2    1    2

3      4      3     4    3    4

1     2     1     2     1     2

3     4     3     4     3     4


其结果变为4X6。A也可以置放文字串,如:


>>C=repmat(' Long live the king!', 2,2)
C =
Long live the king! Long live the king!
Long live the king! Long live the king!

也可置放其他的:


>> D=repmat(NaN,2,5)

D =
NaN   NaN   NaN   NaN   NaN
NaN   NaN   NaN   NaN   NaN

-----------------------------------------------------------------------------------------------------------------------

dist

dist——欧式距离加权函数(Euclidean distance weight function)

语法

    Z = dist(W,P)
    df = dist('deriv')
    D = dist(pos)

描述:dist是一个欧式距离加权函数,给一个输入使用权值,去获得加权的输入。

1、dist(W,P)中:W——S×R的权值矩阵;P——R×Q的矩阵,表示Q个输入(列)向量

2、dist('deriv')返回‘’,因为dist没有导函数。

3、dist也是一个层距离函数,可以被用来寻找一层中神经元之间的距离。

     dist(pos)输入一个参数,pos——N×S的神经元位置矩阵,返回S×S的距离矩阵

例子:  

1、这里,我们定义一个随机权重矩阵W,以及输入向量P,并且计算相应的加权输入Z

       W = rand(4,3);
       P = rand(3,1);
       Z = dist(W,P)

2、我们定义10个神经元的随机的位置矩阵,并且寻找他们的距离,这些神经元是在3维空间中的。

       pos = rand(3,10);

       D = dist(pos)

 综上可知:

dist可以计算样本集中多个样本两两之间的距离矩阵。

对于图像I,将其分成n个超像素,每个超像素的特征有3维,那么形成3×n的超像素特征矩阵M,每列表示一个超像素。

此时,使用dist(M),就会得到一个n×n的矩阵N,其中的元素Nij表示的是第i个超像素和第j个超像素特征之间的欧式距离。

-----------------------------------------------------------------------------------------------------------------------------------------------------

mean

函数功能
求数组的平均数或者均值
使用方法
M = mean(A)
返回沿数组中不同维的元素的平均值。
如果A是一个向量,mean(A)返回A中元素的平均值。
如果A是一个矩阵,mean(A)将其中的各列视为向量,把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的平均值的行向量。
如果A是一个多元数组,mean(A)将数组中第一个非单一维的值看成一个向量,返回每个向量的平均值。

M = mean(A,dim)
返回A中沿着标量dim指定的维数上的元素的平均值。对于矩阵,mean(A,2)就是包含每一行的平均值的列向量。
《Simulink与信号处理》
应用举例 编辑本段回目录

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

mean(A)

当A为向量时,那么返回值为该向量所有元素的均值

当A为矩阵时,那么返回值为该矩阵各列向量的均值

mean(A,2)

返回值为该矩阵的各行向量的均值

---------------------------------------------------------------------------------------------------------------------------------------------------

size

1s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
 
 (2[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。
 
 (3)如果在size函数的输入参数中再添加一项,并用12为该项赋值,则size将返回数组的行数或列数。其中r=size(A,1)该语句返回的时数组A的行数, c=size(A,2) 该语句返回的时数组A的列数。


---------------------------------------------------------------------------------------------------------------------------
numel
n=numel(A)该语句返回数组中元素的总数。
-----------------------------------------------------------------------------

length
n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。n=max(size(A):若A为非空数组,返回A的最大维数;若A为空数组,返回A中最长的非0维数。

------------------------------------------------------------------------------
ndis
ndims(a)表示矩阵a的维数,即length(size(a))
比如ndims([1 2 3;4 5 6])
等于2,因为他是二维矩阵
matlab认为向量也是二维矩阵,只不过其中一个维度的长为1.
因此ndims([1 2 3])也等于2

我们可以构造一个三维甚至更高维度的矩阵,
比如a=cat(3,[1 2 3 4;5 6 7 8],[9 8 7 6;5 4 3 2])
他除了行和列以外还有一个维度,我们暂且把它叫做高度。
也就是说a有两层,第一层是[1 2 3 4;5 6 7 8],第二层是[9 8 7 6;5 4 3 2]
此时有size(a)=[2 4 2]
即2行4列2层
length(a)=4
([2 4 2]中最大为4)
ndims(a)=3
(因为他有3个维度)
----------------------------------------------------------------------
find

找到非零元素的索引和值

 

 

语法:

1.  ind = find(X)

2.  ind = find(X, k)

3.  ind = find(X, k, 'first')

4.  ind = find(X, k, 'last')

5.  [row,col] = find(X, ...)

6.  [row,col,v] = find(X, ...)

 

 

说明:

1.  ind = find(X)   

找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)返回到向量ind中。

如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。

如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。

 

2.  ind = find(X, k) 或 3.  ind = find(X, k, 'first')

返回第一个非零元素k的索引值。

k必须是一个正数,但是它可以是任何数字数值类型。

 

4.  ind = find(X, k, 'last')

返回最后一个非零元素k的索引值。

 

5.  [row,col] = find(X, ...)

返回矩阵X中非零元素的行和列的索引值。

这个语法对于处理稀疏矩阵尤其有用。

如果X是一个N(N>2)维矩阵,col包括列的线性索引。

例如,一个5*7*3的矩阵X,有一个非零元素X(4,2,3),find函数将返回row=4和col=16。也就是说,(第1页有7列)+(第2页有7列)+(第3页有2列)=16。

 

6.  [row,col,v] = find(X, ...)

返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。

如果X是一个逻辑表示,则v是一个逻辑矩阵。

输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。

例如,

A= magic(4)
A =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

[r,c,v]= find(A>10);

r', c', v'
ans =
     1     2     4     4     1     3          (按列)
ans =
     1     2     2     3     4     4         (按列)
ans =
     1     1     1     1     1     1

这里返回的向量v是一个逻辑矩阵,它包含N个非零元素,N=(A>10)

 

 

例子:

例1

X = [1 0 4 -3 0 0 0 8 6];
indices = find(X)

返回X中非零元素的线性索引值。

indices =
     1     3     4     8     9

 

例2

你可以用一个逻辑表达方式定义X。例如

    find(X > 2)

返回X中大于2的元素的相对应的线性索引值。

ans =
     3     8     9

 

例3

下面find指令

X = [3 2 0; -5 0 7; 0 0 1];
[r,c,v] = find(X)

返回X中非零元素行索引值的向量

r =
     1
     2
     1
     2
     3

X中非零元素列索引值的向量

c =
     1
     1
     2
     3
     3

包含X中非零元素的向量

v =
     3
    -5
     2
     7
     1     (按列)

 

例4

下列表示

[r,c,v] = find(X>2)

返回包含X中非零元素的行索引值的向量

r =
     1
     2

包含X中非零元素的列索引值的向量

c =
     1
     3

包含N=(X>2)非零元素的逻辑矩阵

v =
     1
     1

记住,当你用find指令处理一个逻辑表达的时候,输出向量v不包含输入矩阵的非零元素的索引值。而是包含评估逻辑表达之后返回的非零值。

 

例5

在向量上的一些操作

x = [11  0  33  0  55]';

 

find(x)
ans =
     1
     3
     5

 

find(x == 0)
ans =
     2
     4

 

find(0 < x & x < 10*pi)
ans =
     1

 

例6

对于矩阵

M = magic(3)
M =
     8     1     6
     3     5     7
     4     9     2

find(M > 3, 4)

返回前四个M>3的索引值

ans =
     1
     3
     5
     6

 

例7

如果X是一个全零向量,find(X)返回一个空矩阵。

例如indices = find([0;0;0])

indices =
   Empty matrix: 0-by-1


----------------------------------------------------------------------------------------------------------------------


reshape

看Matlab的help文档讲得不是清楚。
先给上一段代码:
>>  a=[1 2 3;4 5 6;7 8 9;10 11 12];
>>  b=reshape(a,2,6);
这段代码的结果是这样的:
>> a
        1       2       3
        4       5       6
        7       8       9
      10      11      12
>> b
        1       7       2       8       3       9
        4      10       5      11       6      12
对于   b=reshape(a,m,n);
其中的规律是这样的,先把矩阵a按列拆分,然后拼接成一个大小为m*n的向量。然后对这个向量每隔m间隔取一个元素组成一个向量b_i,之后的向量b_i+1也是这样生成,只不过第一个元素往下移一位。这样做完之后得到m个大小为n的行向量,将这些行向量拼接即可得到矩阵b。
Matlab <wbr>的reshape函数
 
后记:毕业设计中用到一个向量变换,一开始比较纠结,用循环实现的。迭代1000多次要用到2秒。后来用reshape函数,总共才用了0.03秒,对于我这个深度强迫症患者来说,这两秒时间我还是看得比较宝贵的,哈哈。
以后写matlab要引以为鉴,尽量少用for循环,多用矩阵或者向量的方式来处理。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

tril & triu 

用法:tril(X),其中X表示一个矩阵。
功能:tril函数是tril(X)产生X矩阵的下三角矩阵,其余元素补0。
相关函数: triu函数提取矩阵的上三角矩阵。
备注:matlab中提供了许多对矩阵操作的函数,可以实现矩阵的三角矩阵的提取( triu、tril)、矩阵的翻转( flipudfliplr、Flipdim)和旋转( rot90)等各种操作。
用法:triu(X),其中X表示一个矩阵。
功能:triu函数是matlab中提取矩阵上三角矩阵的函数。triu(X)产生X矩阵的上三角矩阵,其余元素补0。
相关函数: tril函数提取矩阵的下三角矩阵。
备注:matlab中提供了许多对矩阵操作的函数,可以实现矩阵的三角矩阵的提取(triu、 tril)、矩阵的翻转( flipudfliplr、Flipdim)和旋转( rot90)等各种操作。
---------------------------------------------------------------------------------------------------------------------
nonzeros
去掉矩阵中的零元素,并排列成列向量
-----------------------------------------------------------------------------------------------------------------------
    zscore
在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。数据标准化的方法有很多种,常用的有“最小—最大标准化”、“Z-score标准化”和“按小数定标标准化”等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。

二、z-score 标准化
这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x'。
z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。
新数据=(原数据-均值)/标准差
用zscore函数
可以把数据进行z-score标准化处理。
用法为
Y=zscore(X)
     x为标准化之前的数据,y为标准化后的数据
特点:
(1)样本平均值为0,方差为1;
(2)区间不确定,处理后各指标的最大值、最小值不相同;
(3)对于指标值恒定的情况不适用;
(4)对于要求标准化后数据 大于0 的评价方法(如几何加权平均法)不适用。
----------------------------------------------------------



matlab函数大全-matlab函数大全.doc 比较白痴的东西,不过对初学者也许有用,特分享一下。不要喷我哦!函数具体用法可以用help查一下。附件内容与下面一样的。 Aabs 绝对值、模、字符的ASCII码值 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具 all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名 any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while for 环中断指令 brighten 亮度控制 C c capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具 cdf2rdf 复数特征值对角阵转为实数块对角阵 ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象 chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量给出条件数 condest 范 -1条件数估计 conj 复数共轭 contour 等位线 contourf 填色等位线 contour3 三维等位线 contourslice 四维切片等位线图 conv 多项式乘、卷积 cool 青紫调冷色图 copper 古铜调色图 cos 余弦 cosh 双曲余弦 cot 余切 coth 双曲余切 cplxpair 复数共轭成对排列 csc 余割 csch 双曲余割 cumsum 元素累计和 cumtrapz 累计梯形积分 cylinder 创建圆柱 D d dblquad 二重数值积分 deal 分配宗量 deblank 删去串尾部的空格符 dec2base 十进制转换为X进制 dec2bin 十进制转换为二进制 dec2hex 十进制转换为十六进制 deconv 多项式除、解卷 delaunay Delaunay 三角剖分 del2 离散Laplacian差分 demo Matlab演示 det 行列式 diag 矩阵对角元素提取、创建对角阵 diary Matlab指令窗文本内容记录 diff 数值差分、符号微分 digits 符号计算中设置符号数值的精度 dir 目录列表 disp 显示数组 display 显示对象内容的重载函数 dlinmod 离散系统的线性化模型 dmperm 矩阵Dulmage-Mendelsohn 分解 dos 执行DOS 指令并返回结果 double 把其他类型对象转换为双精度数值 drawnow 更新事件队列强迫Matlab刷新屏幕 dsolve 符号计算解微分方程 E e echo M文件被执行指令的显示 edit 启动M文件编辑器 eig 求特征值和特征向量 eigs 求指定的几个特征值 end 控制流FOR等结构体的结尾元素下标 eps 浮点相对精度 error 显示出错信息并中断执行 errortrap 错误发生后程序是否继续执行的控制 erf 误差函数 erfc 误差补函数 erfcx 刻度误差补函数 erfinv 逆误差函数 errorbar 带误差限的曲线图 etreeplot 画消去树 串演算指令 in 跨空间串演算指令 exist 检查变量函数是否已定义 exit 退出Matlab环境 exp 指数函数 expand 符号计算中的展开操作 expint 指数积分函数 expm 常用矩阵指数函数 expm1 Pade法求矩阵指数 expm2 Taylor法求矩阵指数 expm3 特征值分解法求矩阵指数 eye 单位阵 ezcontour 画等位线的简捷指令 ezcontourf 画填色等位线的简捷指令 ezgraph3 画表面图的通用简捷指令 ezmesh 画网线图的简捷指令 ezmeshc 画带等位线的网线图的简捷指令 ezplot 画二维曲线的简捷指令 ezplot3 画三维曲线的简捷指令 ezpolar 画极坐标图的简捷指令 ezsurf 画表面图的简捷指令 ezsurfc 画带等位线的表面图的简捷指令 F f factor 符号计算的因式分解 feather 羽毛图 feedback 反馈连接 f 执行由串指定函数 fft 离散Fourier变换 fft2 二维离散Fourier变换 fftn 高维离散Fourier变换 fftshift 直流分量对中的谱 fieldnames 构架域名 figure 创建图形窗 fill3 三维多边形填色图 find 寻找非零元素下标 findobj 寻找具有指定属性的对象图柄 findstr 寻找短串的起始字符下标 findsym 机器确定内存中的符号变量 finverse 符号计算中求反函数 fix 向零取整 flag 红白蓝黑交错色图阵 fliplr 矩阵的左右翻转 flipud 矩阵的上下翻转 flipdim 矩阵沿指定维翻转 floor 向负无穷取整 flops 浮点运算次数 flow Matlab提供的演示数据 fmin 求单变量非线性函数极小值点(旧版) fminbnd 求单变量非线性函数极小值点 fmins 单纯形法求多变量函数极小值点(旧版) fminunc 拟牛顿法求多变量函数极小值点 fminsearch 单纯形法求多变量函数极小值点 fnder 对样条函数求导 fnint 利用样条函数求积分 fnval 计算样条函数区间内任意一点的值 fnplt 绘制样条函数图形 fopen 打开外部文件 for 构成for环用 format 设置输出格式 fourier Fourier 变换 fplot 返函绘图指令 fprintf 设置显示格式 fread 从文件读二进制数据 fsolve 求多元函数的零点 full 把稀疏矩阵转换为非稀疏阵 funm 计算一般矩阵函数 funtool 函数计算器图形用户界面 fzero 求单变量非线性函数的零点 G g gamma 函数 gammainc 不完全 函数 gammaln 函数的对数 gca 获得当前轴句柄 gcbo 获得正执行"回调"的对象句柄 gcf 获得当前图对象句柄 gco 获得当前对象句柄 geomean 几何平均值 get 获知对象属性 getfield 获知构架数组的域 getframe 获取影片的帧画面 ginput 从图形窗获取数据 global 定义全局变量 gplot 依图论法则画图 gradient 近似梯度 gray 黑白灰度 grid 画分格线 griddata 规则化数据和曲面拟合 gtext 由鼠标放置注释文字 guide 启动图形用户界面交互设计工具 H h harmmean 调和平均值 help 在线帮助 helpwin 交互式在线帮助 helpdesk 打开超文本形式用户指南 hex2dec 十六进制转换为十进制 hex2num 十六进制转换为浮点数 hidden 透视和消隐开关 hilb Hilbert矩阵 hist 频数计算频数直方图 histc 端点定位频数直方图 histfit 带正态拟合的频数直方图 hold 当前图上重画的切换开关 horner 分解成嵌套形式 hot 黑红黄白色图 hsv 饱和色图 附件:[post] matlab函数大全.doc [/post]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值