• matlab-day05


    【例2.1】将矩阵[1,2;3,4]赋值给矩阵a,将a矩阵中的每个元素加1,赋值到矩阵b,将矩阵a的第1行第2列元素置为0,将矩阵a的第2列元素全置为0,求矩阵b转置、逆、秩。

    a = [1, 2; 3, 4];
    disp(a);
    b = a + 1;
    a(1, 2) = 0;
    disp(a);
    a(:, 2) = 0;
    % python []  从0开始   matlab() index从1开始
    disp(a);
    % 转置
    Tb = b';
    disp(b);
    disp(Tb);
    invB = inv(b);
    disp(invB);
    Det_b = rank(b); % 矩阵b的秩
    disp(Det_b); % 2
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    【例2.2】矩阵a=[1,2;3,4],矩阵b=[5,6;7,8],实现两矩阵加、减、乘、点乘

    a = [1, 2; 3, 4];
    b = [5, 6; 7, 8];
    add_a_b = a+b;
    disp(add_a_b);
    sub_a_b = a-b;
    disp(sub_a_b);
    multi_a_b = a.*b;
    disp(multi_a_b);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    【例2.3】新建m文件,名称为Three _ass_add,在文件中实现对3个字符赋值(分别赋值为2、3、4),以及实现3个字符相加,其中,3个字符相加通过定义函数Three_add实现

    %在文件中实现对3个字符赋值(分别赋值为2、3、4),
    %以及实现3个字符相加,其中,3个字符相加通过定义函数Three_add实现
    clear all;
    close all;
    clc;
    a = 2;
    b = 3;
    c = 4;
    result = Three_add(a, b, c);
    disp(result);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Three_add.m

    %% 实现3赋值字符相加函数
    function result = Three_add(a, b, c)
    result = a + b + c;
    end
    
    • 1
    • 2
    • 3
    • 4

    了解计算机编程语言的读者一定知道,编程的基本流程控制语句主要有4种,分别是if语句、for语句、while语句和switch语句。下面分别用实例进行讲解如何在MATLAB中使用这四类语句。
    【例2.4】矩阵a=[1,2,3;4,5,6;7,8,9],如果矩阵a中元素为5或为6时,将元素置为0。要求分别通过for、if语句实现,while、if语句实现,for、switch语句实现。
    通过for、if语句实现的For_if.m文件程序:

    a = [1, 2, 3; 4, 5, 6; 7, 8, 9];
    % 行数是3行
    for i = 1:3
        for j = 1:3
            if a(i, j) == 5 ||  a(i, j)== 6
                 a(i, j) = 0;
            end
        end
    end
    disp(a);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    whileif.m

    a = [1, 2, 3; 4, 5, 6; 7, 8, 9];
    i = 1;
    while(i<=3)
        j = 1;
        while(j <= 3)
            if a(i, j) == 5 ||  a(i, j)== 6
                 a(i, j) = 0;
            end 
            j =j+1;
        end
        i = i + 1;
    end
    
    disp(a);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    for_switch

    %矩阵a=[1,2,3;4,5,6;7,8,9],如果矩阵a中元素为5或为6时,
    %将元素置为0。要求分别通过for、if语句实现,while、if语句实现,for、switch语句实现。
    a = [1, 2, 3; 4, 5, 6; 7, 8, 9];
    for i = 1:3
        for j = 1:3
            switch (a(i, j))
                case 1
                case 2 
                case 3
                case 4
                case 5
                    a(i, j) = 0;
                case 6
                    a(i, j) = 0;
                case 7
                case 8
                case 9
            end
        end
    end
    disp(a);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    【例2.5】假设变量x=[1,2,3,4,5,6],y=[8,9,10,15,35,40],对x、y数据绘图,包括数据点“*”标记、折线图、平滑曲线图。
    在这里插入图片描述

    % plot 绘图
    x = [1,2,3,4,5,6];
    y = [8,9,10,15,35,40];
    plot(x,y,'*b') ;%绘制数据点“*”标记,且用蓝色标记
    hold on %绘图叠加
    plot(x,y);
    xx = min(x):.1:max(x);
    yy = interp1(x,y, xx, 'pchip')% 以三次函数的方式进行插值
    disp(xx);
    plot(xx,yy, 'r');
    hold off;
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    MATLAB三维绘图函数包括三维网格图函数mesh、三维曲面图函数surf、三维曲线图函数plot3、三维球面函数sphere、三维柱面函数cylinder、三维柱形图函数bar3、三维杆图函数stem3、三维饼图函数pie3和三维填充图函数fill3等。

    【例2.6】假设函数z=xe(-x2-y2),要求在x∈[-2,2],y∈[-2,2]区间内绘制三维网格图和三维曲面图。

    % 等分 x , y
    x = -2:.2:2;
    y = -2:.2:2;
    % meshgrid
    [X, Y] = meshgrid(x,y);
    Z = X.*exp(-X.^2 - Y.^2);
    % 绘制
    mesh(X, Y, Z); %绘制三维网格图
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    % 等分 x , y
    x = -2:.2:2;
    y = -2:.2:2;
    % meshgrid
    [X, Y] = meshgrid(x,y);
    Z = X.*exp(-X.^2 - Y.^2);
    % 绘制
    surf(X, Y, Z); %绘制三维曲面图
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    在实际应用中,经常需要在一个图形窗口中绘制若干个独立的图形,这就需要对图形窗口进行分割。分割后的图形窗口由若干个绘图区组成,每一个绘图区可以建立独立的坐标系并绘制图形。同一图形窗口下的不同图形称为子图。MATLAB提供了subplot函数用来将当前窗口分割成若干个绘图区,每个区域代表一个独立的子图,也是一个独立的坐标系,可以通过subplot函数激活某一区,该区为活动区,所发出的绘图命令都是作用于该活动区域。

    【例2.7】将例2.5和例2.6中的图绘制到一个图框中,且完成对其坐标轴的各类操作。

    % 绘制子图
    subplot(2, 2, 1)% 2行2列的第一个
    x = [1,2,3,4,5,6];
    y = [8,9,10,15,35,40];
    plot(x,y,'*b') ;%绘制数据点“*”标记,且用蓝色标记
    hold on %绘图叠加
    plot(x,y,':');
    xx = min(x):.1:max(x);
    yy = interp1(x,y, xx, 'pchip')% 以三次函数的方式进行插值
    disp(xx);
    plot(xx,yy, 'r');
    title('二维绘图1')
    text(2, 5, '坐标值') % 在 2, 5 处添加文字说明 
    hold off; %绘图叠加关闭
    subplot(2, 2, 2)% 2行2列的第2个
    plot(x,y,'^g');
    hold on %绘图叠加
    plot(x,y);
    plot(xx,yy);
    title('二维绘图2')
    axis([0 8 0 50]) % 对坐标轴进行限制
    legend('点标记', '折线图', '光滑图');
    grid on;
    hold off; %绘图叠加关闭
    subplot(2, 2, 3)% 2行2列的第3个
    x = -2:.2:2;
    y = -2:.2:2;
    % meshgrid
    [X, Y] = meshgrid(x,y);
    Z = X.*exp(-X.^2 - Y.^2);
    % 绘制
    mesh(X, Y, Z); %绘制三维网格图
    xlabel('x')
    ylabel('y')
    zlabel('z')
    subplot(2, 2, 4)% 2行2列的第4个
    
    surf(X, Y, Z); %绘制三维曲面图
    axis off % 隐藏坐标轴
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    MATLAB作为数学计算平台,并且将其作为机器学习的平台,必然需要MATLAB具有强大的数据导入和导出能力。MATLAB操作的数据性文件包括.mat、.txt、.xls、.xlsx、.csv等。其中,.mat文件是MATLAB平台自身保存数据的格式,.txt为文本文件,.xls和.xlsx为Office Excel文件,.csv为一种特殊格式的纯文本文件。
    在这里插入图片描述

  • 相关阅读:
    详细介绍下路由器中的WAN口
    DSPE-PEG-Silane,DSPE-PEG-SIL,磷脂-聚乙二醇-硅烷修饰二氧化硅颗粒用
    【Linux】账户密码过期
    软考之软件工程基础理论知识
    【ARM 嵌入式 编译系列 11.1 -- GCC __attribute__((aligned(x)))详细介绍】
    使用Node.js与Strve.js@4.3.0实战一款全新的群聊应用
    代码随想录算法训练营第三十七天| 860.柠檬水找零,406.根据身高重建队列 ,738.单调递增的数字
    Python采集外网美女照片,又是养眼的一天
    <Zero to One> 1.dot-com crash that still guide business thinking today
    Three.js 进阶之旅:全景漫游-初阶移动相机版
  • 原文地址:https://blog.csdn.net/qq_39276337/article/details/126896879