【MATLAB】MATLAB学习笔记

MATLAB入门

  • 基础操作
  • 变量命名
  • 数据类型
  • 逻辑和流程控制
    • 循环结构
    • 分支结构
  • 绘图基本操作
    • 二维平面绘图
    • 绘图参数
    • 三位立体绘图
    • 图像窗口的分割

本文参考B站视频:BV13D4y1Q7RS
由于我对于C语言很熟悉,很多语法是会参考C来学

基础操作

  1. 清屏
    %% 清空环境变量及命令
    clear all %清除Workspace中的所有变量(右侧工作区)
    clc %清除Command Window中的所有命令(命令行窗口)
    
  2. 注释
    %%
    %
    
  3. 查功能
    doc 你要查询的
    

变量命名

变量命名规则

  • 变量名区分大小写
  • 变量名长度不超过63位(MATLAB R2012a 32bit和64bit计算机上测试结果)
  • 变量名以字母开头,可以由字母、数字和下划线组成,但不能使用标点
  • 变量名应简洁明了,通过变量名可以直观看出变量所表示的物理意义

数据类型

  1. 数字

  2. 字符

    s='a'  %单引号表示字符串
    abs(s)  %输出s的ASCII码
    char(97) %输出ASCII码对应的字符
    num2str(65) % Number To Str输出字符数字65
    
  3. 字符串

    str='I love MATLAB & Machine Learning'
    length(str) %字符串长度
    
  4. 矩阵
    矩阵的定义与构造

    %% 矩阵的定义与构造
    A1 = [1,2,3,4,5,6,5,4,6]
    B=1:2:9 %1-9隔1取值,第二个参数为步长,不可缺省
    C = repmat(B,3,2) %重复执行3行2列
    
    A2 = [1 2 3; 4 5 2; 3 2 7] %3*3
    
    D = ones(2,4) %生成一个2行4列的全1矩阵
    
    E = zeros(10,5,3)   %创建一个10行5列3维的全0矩阵
    
    % rand(m,n)生成m*n均匀分布的伪随机数,分布在(0~1)之间
    % rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是’single’
    % rand(RandStream,m,n)利用指定的RandStream(随机种子)生成伪随机数
    F(:,:,1) = rand(10,5)   %10*5 
    
    % randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机数
    % randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵
    % randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵
    E(:,:,2) = randi(5,10,5)
    
    % randn生成标准正态分布的伪随机数(均值为0,方差为1)
    E(:,:,3) = randn(10,5)
    

    矩阵的运算

    %% 矩阵的运算
    A = [1 2 3 4; 5 6 7 8]
    B = [1 1 2 2; 2 2 1 1]
    C = A + B
    D = A - B
    E = A * B'
    F = A .* B % .*表示对应项相乘
    G = A / B %相当于A*B的逆
    H = A ./ B % ./表示对应项相除
    
    I = A2'      % A转置
    J = inv(A) % 逆矩阵
    

    数组下标

    %% 数组下标
    B=A(2,3)
    C=A(3,:)    %第三行
    D=A(:,4)    %第四列 
    [m,n]=find(A >20)   %找符合()中式子的数字下标
    
  5. 元胞数组

    %% 元胞数组
    A = cell(1,6)
    A{2} = eye(3)   %下标从1开始 eye(3)对角线为1的3*3矩阵
    A{5} = magic(5) % magic(5)5*5幻方矩阵
    B = A{5}    %取A第5个cell
    

    在这里插入图片描述

  6. 结构体

    %% 结构体
    books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])
    books.name 
    books.name(1)   %取cell
    books.name{1}   %取字符串
    

逻辑和流程控制

循环结构

  1. for循环

    %% for循环
    语法格式:
    for循环变量=初值:步长:终值(步长可省略,默认为1)
        执行语句1
        ...
        执行语句n
    end
    
    %【例5-8】求1^2+2^2+3^2+4^2+5^2的和。程序设计为:
    sum = 0
    for n= 1:1:5
        sum = sum +n^2;
    end
    

    在这里插入图片描述

    在这里插入图片描述

    sum = 0;
    for i= 1:5
        p= 1;
            for j=1:i
            p=p*j;
            end
        sum = sum + p;
    end
    

    在这里插入图片描述

  2. while循环

    %% while
    语法格式:
    while 条件表达式
        执行语句1
        ...
        执行语句n
    end
    
    % 【例5-11】求1+2+3+4+5+…+10的和。
    s= 0
    n= 1
    while n<= 10 %设置循环条件
        s =s+n
        n =n+1
    end
    

    在这里插入图片描述

    %【例5-12】设计一段程序,求1~100的奇数和程序设计为:
    x= 1
    sum = 0
    while x<101
        sum= sum+ x;
        x =x+2
    end
    

    在这里插入图片描述

分支结构

  1. if…end

    %% if...end
    语法格式:
    if 条件表达式
        ...
        语句体
        ...
    end
    
  2. if…else…end

    %% if...else...end
    语法格式:
    if 条件表达式
        语句体1
    else
        语句体2
    end
    
  3. switch…case…end

    %% switch
    switch 表达式(数值或字符串)
        case数值或字符串1
            语句体1;
        case数值或字符串2
            语句体2;
        ...
        otherwise
            语句体n;
    end
    

    switch后面表达式的值为数值变量或字符变量,通过这些值与case后面数值或字符串的值进行比较,与哪一个 case的值相同就执行哪一个case下面的语句体,如果与所有case的值都不相同,则执行otherwise下面的语句体。otherwise语句可以省略,如果省略ptherwise,所有case都不满足时跳出分支结构,另外switch必须与end配对使用。

绘图基本操作

二维平面绘图

%% 二维平面绘图
x = 0:0.01:2*pi %定义x的范围,第二个参数表示步长
y = sin(x)
figure %建立一个幕布
plot(x,y) %绘制当前二维平面图
title('y = sin(x)') %标题
xlabel('x') %x轴
ylabel('sin(x)') %y轴
xlim([0 2*pi]) % x坐标值的范围

在这里插入图片描述

绘图参数

在这里插入图片描述

在这里插入图片描述

x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); %共用一个x的坐标系,在y上有不同的取值
%设置相应的标签
set(get(AX(1),'Ylabel'),'String','Slow Decay')
set(get(AX(2),'Ylabel'),'String','Fast Decay')
xlabel('Time(\musec)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--')    %参数设置
set(H2,'LineStyle',':')

在这里插入图片描述

三位立体绘图

%% 三维立体绘图
t = 0: pi/50: 10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
%hold on 在图像基础上继续绘图
%hold off %不保留当前操作
grid on %加网格线
axis square %使整个图(连同坐标系)呈方体

在这里插入图片描述

图像窗口的分割

%% 图像窗口的分割
x=linspace(0,2*pi,60);
subplot(2,2,1)%用来给幕布分格,表示将幕布均等分成2行2列,将图形放到第一个格子中
plot(x, sin(x)-1);
title('sin(x)-1');axis([0,2*pi,-2,0])

subplot(2,1,2)
plot(x, cos(x)+1);
title('cos(x)+1');axis([0,2*pi,0,2])

subplot(4,4,3)
plot(x, tan(x));
title('tan(x)');axis([0,2*pi,-40,40])

subplot(4,4,8)
plot(x, cot(x));
title('cot(x)');axis([0,2*pi, -35,35])

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/444919.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端vite+vue3——可视化页面性能耗时指标(fmp、fp)

文章目录 ⭐前言&#x1f496;vue3系列文章 ⭐可视化fmp、fp指标&#x1f496; MutationObserver 计算 dom的变化&#x1f496; 使用条形图展示 fmp、fp时间 ⭐项目代码⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于 前端vitevue3——可视化页面性能耗时…

论文阅读:Diffusion Model-Based Image Editing: A Survey

Diffusion Model-Based Image Editing: A Survey 论文链接 GitHub仓库 摘要 这篇文章是一篇基于扩散模型&#xff08;Diffusion Model&#xff09;的图片编辑&#xff08;image editing&#xff09;方法综述。作者从多个方面对当前的方法进行分类和分析&#xff0c;包括学习…

图像处理与图像分析—图像的读入(C语言)

学习将会依据教材图像处理与图像分析基础&#xff08;C/C&#xff09;版内容展开 什么是数字图像处理 一副图像可以定义为一个二维函数 f(x&#xff0c;y) &#xff0c;其中 x 和 y 是空间&#xff08;平面&#xff09;坐标&#xff0c;任意一对空间坐标 (x,y) 处的幅度值 &am…

了解 HTTPS 中间人攻击:保护你的网络安全

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

二叉树进阶--二叉搜索树的进一步优化--AVL树 Self-balancing binary search tree

前言&#xff1a; 在上一次的文章中&#xff0c;我们详细介绍了二叉树的进阶树型&#xff0c;即BS树(二叉搜索树),但在文章的结尾&#xff0c;二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表…

golang实现正向代理和反向代理

文章目录 正向代理反向代理区别与联系:总结代理服务器实现正向代理反向代理正向代理 正向代理是客户端代理,它位于客户端和目标服务器之间。它的作用是保护客户端的隐私和安全。 如我们现在想要访问谷歌,但是由于某些原因,无法直接访问到谷歌,我们可以通过连接一台代理服务…

Redis缓存过期策略

文章目录 一、面试题二、redis内存1. Redis的内存大小怎么查看&#xff1f;2. 设置redis内存3. redis内存的OOM 三、redis内存淘汰策略1. redis的过期键删除策略2. redis缓存淘汰策略 一、面试题 1. 生产上你们redis内存设置多少&#xff1f; 2. 如何配置、修改redis内存大小…

YOLOV5 初体验:简单猫和老鼠数据集模型训练

1、前言 前两天&#xff0c;通过OpenCV 对猫和老鼠视频的抽取&#xff0c;提取了48张图片。这里不再介绍&#xff0c;可以参考之前的文章&#xff1a;利用OpenCV 抽取视频的图片&#xff0c;并制作目标检测数据集-CSDN博客 数据的目录如下&#xff1a; 项目的下载见文末 2、制…

基于Java的在线课程教学系统(Vue.js+SpringBoot)

目录 一、摘要1.1 系统介绍1.2 项目录屏 二、研究内容2.1 课程类型管理模块2.2 课程管理模块2.3 课时管理模块2.4 课程交互模块2.5 系统基础模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示4.1 管理后台4.2 用户网页 五、样例代码5.1 新增课程类型5.2 网站登录5.3 课…

第十一篇 - 应用于市场营销视频场景中的人工智能和机器学习技术 – Video --- 我为什么要翻译介绍美国人工智能科技巨头IAB公司(1)

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先后为700多家媒体…

为什么选择 Flink 做实时处理

优质博文&#xff1a;IT-BLOG-CN 为什么选择 Flink 【1】流数据更真实地反映了我们的生活方式&#xff08;实时聊天&#xff09;&#xff1b; 【2】传统的数据架构是基于有限数据集的&#xff08;Spark 是基于微批次数据处理&#xff09;&#xff1b; 【3】我们的目标&#xf…

ROS——ROS环境搭建

Ubuntu 安装完毕后&#xff0c;就可以安装 ROS 操作系统了&#xff0c;大致步骤如下: 配置ubuntu的软件和更新&#xff1b; 设置安装源&#xff1b; 设置key&#xff1b; 安装&#xff1b; 配置环境变量。 1.配置ubuntu的软件和更新 配置ubuntu的软件和更新&#xff0c;…

系统编程--makefile项目管理

这里写目录标题 介绍语法结构总览基础规则简介最简单的makefile对于基础规则的理解和应用总结 makefile时尽量使用更独立的命令&#xff0c;减少文件之间的耦合度需求以及解决总结 补充&#xff08;关于makefile中脚本命令的编写顺序&#xff09; 一级目录二级目录二级目录二级…

数据科学中的Python:NumPy和Pandas入门指南【第121篇—NumPy和Pandas】

数据科学中的Python&#xff1a;NumPy和Pandas入门指南 数据科学是当今数字时代中的一个重要领域&#xff0c;而Python是数据科学家们最喜爱的编程语言之一。在这篇博客中&#xff0c;我们将介绍Python中两个强大的库——NumPy和Pandas&#xff0c;它们在数据处理和分析中发挥…

java算法第十八天 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

110.平衡二叉树 leetcode链接 思路&#xff1a; 使用后序遍历分别求左右子树的高度&#xff0c;若高度只差大于一&#xff0c;则返回-1&#xff0c;否则返回当前节点的最大高度。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* Tree…

爬虫(五)

1. 前端JS相关 三元运算 v1 条件 ? 值A : 值B; # 如果条件成立v1值A&#xff0c;不成立v1等于值Bres 1 1 ? 99 : 88 # res99特殊的逻辑运算 v1 11 || 22 # Ture v2 9 || 14 # 9 v3 0 || 15 # 15 v3 0 || 15 || "zhangfei" # 15赋值和…

x86 Ubuntu上编译eudev给龙芯loongarch64架构主机使用

1、下载eudev库eudev-master.zip&#xff0c;链接&#xff1a;eudev库官方地址 2、下载龙芯的交叉编译工具&#xff1a;loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.2.tar.xz&#xff0c;链接&#xff1a;龙芯交叉编译官方地址 3、交叉编译器环境搭建 (1)、…

latex绘图中\begin{figure}[htbp]中的htbp什么意思

在LaTeX中&#xff0c;\begin{figure}[htbp] 用来开始一个图形环境&#xff0c;其中 [htbp] 是一个位置参数&#xff0c;用来指导LaTeX如何放置这个图形。 具体来说&#xff0c;[htbp] 中的每个字母代表一个放置选项&#xff1a; h&#xff1a;代表“here”&#xff0c;意味着…

【LeetCode: 299. 猜数字游戏 - 模拟 + 计数】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

springcloud第3季 consul服务发现注册,配置中心2

一 consul的作用 1.1 为何使用注册中心 为何要用注册中心&#xff1f; 1.A服务调用B服务&#xff0c;使用ip和端口&#xff0c;如果B服务的ip或者端口发生变化&#xff0c;服务A需要进行改动&#xff1b; 2.如果在分布式集群中&#xff0c;部署多个服务B&#xff0c;多个服…