zoukankan      html  css  js  c++  java
  • Matlab操作矩阵的相关方法

    Matlab操作矩阵的相关方法

    下面这篇文章主要是对吴恩达老师机器学习中matlab操作的一个整理和归纳

    一、基本操作

    1.生成矩阵(ones、zeros

    A = [1 2;3 4;5 6]             #生成3行4列的矩阵

    B = [1 2 3]                      #B就是一个行向量

    C = [1;2;3]                      #定义c为一个列向量

    D = 1:0.1:2           #定义开始值为1,步长为0.1,结束值为2的一个行向量

    E = 1:6                  #定义开始值为1,步长默认为1,结束值为6的行向量

    ones(2,3)     #矩阵中所有元素都为1 定义一个2行3列的矩阵

    zeros(2,3)   #矩阵中所有的元素都为0 定义一个2行3列的矩阵

    2.生成随机矩阵(rand、randn

    rand(1,3)         #生成1行3列的随机矩阵

    randn(2,3)      #生成高斯随机矩阵,高斯随机矩阵即为标准差或方差为1

    3.生成单位矩阵(eye(n)

    eye(n)        #生成n行n列的单位矩阵

    4.帮助命令(help

    help 变量名     #可查看函数的API详解

    二、移动数据

    1.操作.txt文件(load

    1.1 加载.txt文件并且拆分文件的行和列的值

    data = load('文件路径')      #加载文件

    获取多列的数据(获取多行的数据和多列类似,只需要修改第一个参数即可)

    data(:,1)     #拿到所有行第一列的数据

    data(:,1:2)   #拿到所有行第一列和第二列的数据

    data(:,1:3)   #拿到所有行第一列、第二列和第三列的数据

    data(:,[1,3])  #拿到所有行第一列和第三列的数据

    将矩阵所有的数据扁平化为一列

    data(:)

    将矩阵所有的数据扁平化为一行

    data(:)'

    1.2 将数据保存为.txt文件

    v = data(:,1)     #拿到第一列的数据

    save test.txt v -ascii   #将数据保存到test.txt文件中

     

    2.矩阵的操作

    2.1 获得矩阵的行数和列数(size()

    size(A)     #返回一个1行2列的矩阵  分别是矩阵的行数和列数

    size(A,1)    #返回矩阵的行数

    size(A,2)    #返回矩阵的列数

    2.2 拿到矩阵的最大维度(length()

    length(A)     #获得矩阵的行数和列数中维度较大的一个

    2.3 通过矩阵索引获取某一个值

    A(m,n)      #索引到矩阵m行n列的位置

    2.4 修改矩阵的某一行或者某一列

    A(:,2) = [10;11;12]    #修改矩阵第二列的数据

    2.5 在矩阵中添加一行新的数据

    A = [A,[10;11;12]]      #向矩阵中添加一行新的数据

    C=[A B] 

    2.6 矩阵的结合

    横向结合:

    A = [1 2;3 4;5 6]

    B = [11 12;13 14;15 16]

    C = [A B]

    纵向结合:

    C= [A;B]

    三、计算数据

    1.A.*B(矩阵之间的乘积)

    A .*B    # A中对应位置元素和B中对应位置元素的乘积

    2.A.^2 (矩阵自身的平方)

    A.^2    #矩阵A的平方(A矩阵中的每个元素都平方)

    3.1./A(矩阵中每个元素的倒数)

    1./A 矩阵A中每个元素分别求倒数

    4.log(A) (对矩阵中每个元素求对数) ,exp(A)(对A中的每个元素以e的底数)

    5.abs(A)(对矩阵中的每个元素求绝对值)

    6.-A(对矩阵中的每个元素求相反数)

    7.A+1(对矩阵中每个对应的元素+1)

    8.A’(A的转置)

    9.一些有用的函数

    求矩阵中最大的一个值:

    max(max(A))

    或者

    max(A(:))   首先扁平化A成为一个列向量,然后求最大值

    max是默认求每列的最大值:

    max(A)  #求矩阵A的最大值(如果A是矩阵,会拿到每一列的最大值)

    max(A,[],1)  #拿到矩阵A中每一列的最大值

    max(A,[],2)  #拿到矩阵A中每一行的最大值

    [val, ind] = max(a)   #返回矩阵A中的最大值和索引

    A<3 (对应元素的比较 如果小于3返回1,如果大于3返回0)

    find(A<3)   #找到A中所有小于3的元素,并且返回他们的索引

    A=magic(3)   #任意行、列、对角的元素相加的和等于相同的值

    [r,c] = find(A>=7)   #拿到所有大于等于7的元素的所在行和列

    sum(A)   #获得矩阵中所有元素的和

    sum(A,1)  #获得矩阵中每一列相加的和

    sum(A,2)  #获得矩阵中每一行相加的和

    sum(sum(A))  #获得所有元素的值

     

    prod(A)   #获得矩阵中所有元素的乘积

    floor(A)   #对矩阵中所有元素向下取整

    ceil(A)    #对矩阵中所有元素向上取整

    10.逆矩阵

    pinv(A)    #求A得逆矩阵

    pinv(A)*A  #就会拿到单位矩阵

    四、数据绘制

    1.绘制正弦函数

    t = [0:0.01:0.98];

    y1 = sin(2*pi*4*t);

    plot(t,y1);

    2.绘制余弦函数

    t = [0:0.01:0.98];

    y2 = cos(2*pi*4*t);

    plot(t,y2);

    3.同时绘制正弦函数和余弦函数

    t = [0:0.01:0.98];

    y1 = sin(2*pi*4*t);

    y2 = cos(2*pi*4*t);

    plot(t,y1);

    hold on;                     #hold on 的作用是在旧的图像上绘制新的图像            

    plot(t,y2,'r')           

    xlabel('times');        #添加横轴的label

    ylabel('values');        #添加纵轴的label

    legend('sin','cos')     #将图例添加到右上角

    title('my plot')         #给图像一个title

    close;    #关闭图像

    figure(1);plot(t,y1);

    figure(2);plot(t,y2);   #给不同的图像命名

    4.将图像分为一个1*2的格子

    subplot(1,2,1)   #前两个参数的意思是分为1*2的格子,后面一个参数的意思是当前使用第一个格子

    5.改变轴的刻度

    axis([0.5 1 -1 1])  #(xmin xmax ymin ymax)

    6.清除一副图像(clf)

    7.可视化一个矩阵

    A = magic(5)

    imagesc(A);

    imagesc(A), colorbar, colormap gray;    #一个灰度分布图

  • 相关阅读:
    Java-DatabaseConnectionPool工具类
    Java-收邮件
    Java-发邮件
    Java-ZipUtil工具类
    Java-WebServiceUtil工具类
    Java-FtpUtil工具类
    Java-Base64Fiend工具类
    Java-ConnectDB工具类
    Java-UploadHelper工具类
    Java-生成缩略图工具类
  • 原文地址:https://www.cnblogs.com/leijing0607/p/9683486.html
Copyright © 2011-2022 走看看