您的位置:首页 > 编程语言 > MATLAB

Matlab中各类函数用法

2015-10-15 15:21 441 查看
开始接触Matlab,在此篇博文中将记录所有遇到的各类函数的用法并配上自己测试后的说明,会定期更新。

1.size()获取矩阵的行数和列数

(1)s=size(A),

         当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。

(2)[r,c]=size(A),

         当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。

(3)size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数,

 c=size(A,2) 该语句返回的时矩阵A的列数。另外,length()=max(size()).

2.plot()用于画图,在画图之前需要用clf清空图像

3.std()用于进行标准差计算

4.randn()产生正态分布的随机数或矩阵的函数
randn('state',s):s=0时,产生的为固定样本种子(每次都一样);s=1时,产生的为随机样本种子(每次都不一样)。
用法:Y = randn(n)返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。
 Y = randn(m,n) 或 Y = randn([m n])返回一个m*n的随机项矩阵。
 Y = randn(size(A))返回一个和A有同样维数大小的随机数组。
产生一个随机分布的指定均值和方差的矩阵:将randn产生的结果乘以标准差,然后加上期望均值即可。例如,产生均值为0.6,方差为0.1的一个5*5的随机数方式如下:
x = 0.6 + sqrt(0.1) * randn(5)

5.str2num() 把字符串转换数值,可以使用str2double来替代str2num。 matlab中,无论是内建函数还是工具箱函数, 2很常见, 这可能是因为2英文two和to发音相同。而2写起来也比较简单。 

  所以很多转换类函数都用2来命名而非to。比如number to string, 不是命名为numTostr而是num2str。

6.lower(X) 将X中所有字母转换为小写

7."英文句点+星号"[.*]表示点乘运算,即按元素相乘,而不是通常的矩阵乘 

8.data(:,y) 就是指y列对应的所有行的值组成的一个向量,列向量。

9.round(A) 对数值A进行四舍五入,如果A是数组等有多个数值,则对所有数值进行四舍五入的取整操作,并返回相应取整后的相同维数的数组。

10.diag函数功能:矩阵对角元素的提取和创建对角阵。

设以下X为方阵,v为向量 X = diag(v,k)当v是一个含有n个元素的向量时,返回一个n+abs(k)阶方阵X,向量v在矩阵X中的第k个对角线上,k=0表示主对角线,k>0表示在主对角线上方,k<0表示在主对角线下方。例:

v=[1 2 3];

diag(v, 3)

ans =

     0     0     0     1     0     0

     0     0     0     0     2     0

     0     0     0     0     0     3

     0     0     0     0     0     0

     0     0     0     0     0     0

     0     0     0     0     0     0

当未指定k值时,默认k=0,即X = diag(v)等价于X = diag(v,0),此时v为对角线上的元素。

v = diag(X,k),此时将矩阵X作为参数传入diag()函数中,返回值v即为对角线上的元素。k=0主对角线,k>0上三角的对角线,

k<0下三角的对角线上的元素。

11.chol()函数:如果矩阵X是对称正定的,则Cholesky分解将矩阵X分解成一个下三角矩阵和上三角矩阵的乘积。设上三角矩阵为R,则下三角矩阵为其转置,即X=R'R。MATLAB函数chol(X)用

于对矩阵X进行Cholesky分解,其调用格式为:R=chol(X):产生一个上三角阵R,使R'R=X。若X为非对称正定,则输出一个出错信息。

12.inv()函数:inv是矩阵求逆的意思。具体用法A=inv(B),其中B是输入的可逆矩阵,输出A就是B的逆矩阵,逆矩阵满足性质 AB=BA=E (E是单位阵)。

如果输入的是不可逆矩阵会弹出警告,并返回inf。

13.abs()取绝对值

14.ones(a,b):生成a行b列的全部元素为1的矩阵

15.X^X是矩阵的乘法,如果是X.^Y则是矩阵X和矩阵Y对应相同位置上元素相乘(Xij*Yij作为新矩阵第i行第j列的元素)

16.sum(x,2)表示矩阵x的横向相加,求每行的和,结果是列向量。而缺省的sum(x)就是竖向相加,求每列的和,结果是行向量。

17.exp(a),如a是一标量(即一常数),返回自然常数的a次方;如a是以矩阵,则返回矩阵每个元素对应的exp次方值。

18.length(X)获取矩阵X行列数的较大值

19.matlab中矩阵的存储方式和scala类似,都是一列一列排序存储,故w(nonZero)此类方法,实际就是将w和nonZero进行比较,因为w和nonZero中元素都是类似于一列列存储在一位数组中将w和nonZero中位置i的元素进行比较,如果nonZero在i位置元素为真(非零),则取w在i处的值,此处只需要注意nonZero长度可以随意,但是在长度超过w长度后的元素只能取0,否则会报错类似数组越界。对于类似A(non)=B此类式子,B中元素个数必须和non中非零元个数一样从而能够每次匹配到非零元时一一配对填充进入A中取代原来A中的值。
20.对于 a = w(nonZero) 此类式子中,右侧可以理解为,将矩阵w和nonZero中的所有元素按照列优先的顺序存储在一个一维数组中,然后根据nonZero的长度遍历nonZero中的元素,对于为真(非零)的位置,取w所存数组中同样位置处的元素,遍历完nonZero后从w得到的数组将会以矩阵形式赋值给a  至于是行矩阵还是列矩阵则是和nonZero一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 函数