Matlab学习笔记(一)

"Matlab学习笔记"

Posted by jhljx on September 22, 2016

目录

1. Matlab find函数
2. Python2和Python3除法的比较
3. Matlab std函数

1. Matlab find函数

find函数用于返回所需要元素的所在位置 (位置的判定:在矩阵中,第一列开始,自上而下,依次为1,2,3…,然后再从第二列,第三列依次往后数)

find(A)返回矩阵A中非零元素所在位置

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

     1     3     4     8     9

find(A>5)返回矩阵A中大于5的元素所在位置

>> find(A>5)
ans =

     8     9

[i,j,v]=find(A) 返回矩阵A中非零元素所在的行i,列j,和元素的值v(按所在位置先后顺序输出)

>> A=[3 2 0; -5 0 7; 0 0 1];
>> [i,j,v]=find(A)
i =
    1
    2
    1
    2
    3
j =
    1
    1
    2
    3
    3
v =
    3
    -5
    2
    7
    1

find(A>m,4)返回矩阵A中前四个数值大于m的元素所在位置

I = find(X) returns a vector containing the linear indices of each nonzero element in array X.

I = find(X,k) returns the first k indices corresponding to the nonzero elements in X.

I = find(X,k,direction) specifies the search direction as either ‘first’ or ‘last’. For example, find(X,k,’last’) finds the last k nonzero elements in X.

[row,col] = find(___) returns the row and column subscripts of each nonzero element in array X using any of the previous syntaxes.

[row,col,v] = find(___) also returns vector v that contains the nonzero elements of X.

Matlab 部分使用技巧

  • Matlab numel(A)函数会返回A中的元素个数,相当于prod(size(A))。prod是计算数组中所有元素乘积的函数。
  • Matlab中A=[1 2;3 4;5 6],其中A(1)=1,A(2)=3。要表示行向量的话A(1,:)才表示行向量
  • Matlab计算矩阵每一列的均值: 对于矩阵A,mean(A)可以表示每一列的平均值;mean(A’)可以表示每一行的平均值
  • Matlab randperm(size(X,1))表示随机打乱矩阵X的行数,其中randperm(n)可以随机打乱一个数字序列,表示把1到n这些数随机打乱得到新的数字序列

      A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]
      rowrank = randperm(size(A, 1)); % 随机打乱矩阵的行数
      B = A(rowrank, :)
      % 一个可能的输出结果:
      A =
      1 2 3
      4 5 6
      7 8 9
      10 11 12
      B =
      1 2 3
      7 8 9
      4 5 6
      10 11 12
    
  • Matlab A(1:3:end),A(1:end)这样都很方便。所以需要注意end的用法,表示最后一个元素的位置

3. Matlab std函数

  • std(A): std(A)函数求解的是最常见的标准差,此时除以的是N-1
  • std(A,flag): 这里flag代表的是用哪一个标准差函数,如果取0,则代表除以N-1,如果是1代表的是除以N
  • std(A,flag,dim): 第三个参数代表的是按照列求标准差还是按照行求标准差,std(A,1,1)代表的是按照列求标准差,std(A,1,2)代表的是按照行求标准差