MATLAB零基础入门(一)

2023-11-02

大家好!我是Henry!上一期的Python爬虫实践中,Henry导入了Matplotlib库进行了新冠疫情的每日新增的绘图。其实Matplotlib的原型是另一门应用非常广泛的语言——Matlab。最近Henry也学习了一些Matlab的绘图技巧,分享给大家~

我们先放几张效果图~

y=sinx

看到这里,是不是觉得很酷炫呢!那跟着我一起来学习吧!

一、MATLAB初印象

1.什么是MATLAB?

  • MATLAB的实际含义是Matrix Laboratory,从名字我们知道,最初是设计出来为了更好的理解线性代数(Linear algebra),后来逐步演化为现在的功能及其强大的MATLAB

2.如何下载MATLAB?

  • MATLAB的官网可以下载免费试用版(30天).
  • 各大高校可能为大家购买了正版,可以在学校的信息化网站上找到。
  • 公众号关注软件安装管家,回复matlab,可以获得百度网盘的资源。

3.MATLAB界面熟悉

二、开始绘图(在实时脚本中编写并运行)

1.简单平面函数图像

  • 我们先从最简单的线性函数开始,打卡MATLAB界面,输入如下代码
x=0:0.5:4;  % 这里表示,x变量为[0,4],中间每隔0.5写一个坐标值,作为横轴。
y=2*x+1;    % 变量y=2x+1,作为纵轴。
plot(x,y)   % 调用plot函数,横纵轴变量作为参数,进行绘图。

点击运行(Run),得到图像。

y=2x+1
  • 我们再尝试一个复杂的平面图象y=2e^{-0.5x}\cos 4\pi x,输入如下代码
x=0:pi/100:2*pi;              %定义变量x为[0,2pi],每隔pi/100标注一个坐标值,作为横轴
y=2*exp(-0.5*x).*cos(4*pi*x); %定义变量y,exp(x)表示自然底数的指数函数e的x次方,.*表示点乘
plot(x,y)                     %调用plot函数,进行绘图

运行结果为

  • 我们再尝试一个极坐标函数图像r=\sin t\cos t,输入如下代码
t=0:pi/50:2*pi;        %定义变量t[0,2pi],每隔pi/50标注一个坐标值,作为横轴
r=sin(t).*cos(t);      %定义变量r=sint·cost, .*表示点乘(内积)
polarplot(t,r);        %这里不能直接调用plot函数,而是专门绘制极坐标图的polarplot函数。 

运行结果为

2.绘制子图。

有时候,我们需要在一张纸上,绘制多个图,就需要用到subplot函数,创建多个图像。具体用法为:

subplot(m,n,i) 
% 这条语句表示,创建一个m行n列的画布(即可以画m*n个图像),现在进行第i个图像的绘制

在这里额外补充几个图的类型:条形图(bar),阶梯图(stairs),杆图(stem),填充图(fill),我们通过实际的例子来学习,顺便用一下刚学的子图,将这几个图画在同一张画布上。
我们选取的例子为简单的平面函数y=2\sin x

x=0:pi/10:2*pi;          %定义x变量为[0,2pi],每隔0.1pi标记一个点,作为横轴
y=2*sin(x);              %定义变量y=2*sinx
subplot(2,2,1);                 %创建一个2行2列的画布,现在进行第一张图的绘制
bar(x,y,'g');                   %绘制一张以x,y为横纵坐标的条形图,颜色用绿色(green)
title('bar(x,y,''g'')');        %创建第一张图的标题为“bar(x,y,''g'')”
axis([0,7,-2,2]);               %控制显示的坐标轴的长度,x为[0,7],y为[-2,2]
subplot(2,2,2);                 %现在进行第二张图的绘制
stairs(x,y,'b');                %绘制一张以x,y为横纵坐标的阶梯图,颜色用蓝色(blue)
title('stairs(x,y,''b'')');     %创建第二张图的标题为“stairs(x,y,''b'')”
axis([0,7,-2,2]);               %控制显示的坐标轴的长度,x为[0,7],y为[-2,2]
subplot(2,2,3);                 %现在进行第三张图的绘制
stem(x,y,'k');                  %绘制一张以x,y为横纵坐标的杆图,颜色用黑色(black)
title('stem(x,y,''k'')');       %创建第三张图的标题为“stem(x,y,''b'')”
axis([0,7,-2,2]);               %控制显示的坐标轴的长度,x为[0,7],y为[-2,2]
subplot(2,2,4);                 %现在进行第四张图的绘制
fill(x,y,'y');                  %绘制一张以x,y为横纵坐标的填充图,颜色用黄色(yellow)
title('fill(x,y,''y'')');       %创建第四张图的标题为“fill(x,y,''y'')”
axis([0,7,-2,2]);               %控制显示的坐标轴的长度,x为[0,7],y为[-2,2]

运行结果如下:

3.绘制三维图像

往往,我们还需要绘制三维函数图像,我们还是从例子中学习。

  • 先举一个大家熟悉的例子:空间螺线(x=\sin t,y=\cos t,z=t  )
t=0:pi/100:20*pi;        %定义变量t[0,20pi],每隔pi/100标注一个坐标值
x=sin(t);                %定义变量x=sint
y=cos(t);                %定义变量y=cost
z=t;                     %定义变量z=t
plot3(x,y,z);                %调用绘图函数plot3,表示绘制三维图像,三个参数分别为x,y,z轴值
title('Line in 3-D Space');  %标题为“Line in 3-D Space”
xlabel('X');
ylabel('Y');     %给x,y,z轴分别加上标签(label),即命名
zlabel('Z'); 
grid on;         %grid on 表示打开网格,会出的图像会出现网格

运行结果为:

  • 再给大家介绍一下更复杂的几个三维曲面图像:花瓶型(cylinder),球形(sphere),多峰型(peaks)
t=0:pi/20:2*pi;                   %定义参数t[0,2pi],每隔pi/100标注一个。
[x,y,z]= cylinder(2+sin(t),30);   %将x,y,z定义为花瓶型并绘图(cylinder本身为圆柱,这里将表面调整了)
subplot(2,2,1);                   %创建一个可以画四个图的子图,这里画其中第一个
mesh(x,y,z);                      %mesh为绘制网格曲面图的函数
subplot(2,2,2);                   %画第二个图
[x,y,z]=sphere;                   %将x,y,z定义为球形并绘图
mesh(x,y,z);                       
subplot(2,1,2);                   %画第三个图
[x,y,z]=peaks(30);                %将x,y,z定义为多峰型并绘图
mesh(x,y,z);

运行结果如下:

三、总结

  • MATLAB是一款功能强大的软件,已经形成独立的matlab语言,本篇提到的绘图功能仅仅是它的一小部分内容

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB零基础入门(一) 的相关文章

  • 一次分配多个字段的聪明方法?

    由于遗留函数调用 我有时被迫编写像这样的丑陋的包装器 function return someWrapper someField a someField a b someField b and so on realistically it
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 在 MATLAB 中使用 FFT 的频率响应

    这是场景 使用频谱分析仪 我有输入值和输出值 样本数是32000采样率为2000样本 秒 输入是正弦波50 hz 输入为电流 输出为压力 单位 psi 我如何使用 MATLAB 根据这些数据计算频率响应 使用 MATLAB 中的 FFT 函
  • MATLAB 中时间戳过滤器的优化 - 处理非常大的数据集

    我正在 MATLAB 中编写一个程序 必须使用 MATLAB 并且不能真正使用 MEX 来过滤大量数据 我需要实现的过滤器之一要求我将时间戳向量与其他时间戳不会出现的已知 不良 时间列表进行比较 一个典型的时间戳向量有大约 2 000 00
  • Matlab Mex文件编译

    我正在尝试编译一个 mex 文件以在 matlab 中使用套接字连接 问题是它总是说我没有安装sdk或编译器 但我已经安装了 Visual Studio 2010 Express Visual Studio 2012 Express Vis
  • 在 matlab 中求 3d 峰的体积

    现在我有一个带有峰值的 3D 散点图 我需要找到其体积 我的数据来自图像 因此 x 和 y 值表示 xy 平面上的像素位置 z 值是每个像素的像素值 这是我的散点图 scatter3 x y z 20 z filled 我试图找到数据峰值的
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • Simulink 仿真引擎如何工作?

    我想了解 Simulink 仿真引擎的工作原理 它是否使用离散事件模拟机制 那么如何处理连续时间 它是否依赖于基于静态循环的代码生成 或者 在第一个周期之前 它会计算出块的执行顺序 从不需要任何其他块输入的块开始 每个周期 它都会根据输入和
  • 有没有办法在matlab中进行隐式微分

    我经常使用 matlab 来帮助我解决数学问题 现在我正在寻找一种在 matlab 中进行隐式微分的方法 例如 我想区分y 3 sin x cos y exp x 0关于dy dx 我知道如何使用数学方法通常做到这一点 但我一直在努力寻找使
  • 在 Matlab 中将 datenum 转换为 datetime 的最快方法

    我在 Matlab 中将 datenum 转换为 datetime 时遇到问题 Given dnum floor now floor now 1 我尝试了以下方法 datenum dnum 但这没有用 我发现有效的方法是 datetime
  • 括号中的波形符字符

    在 MATLAB 中 以下代码执行什么操作 m func returning matrix 波浪号运算符 的作用是什么 在 Matlab 中 这意味着不要将函数中相应的输出参数分配到赋值的右侧 因此 如果func returning mat
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • matlab中的正则逻辑回归代码

    我正在尝试正则化 LR 在 matlab 中使用以下公式很简单 成本函数 J theta 1 m sum y i log h x i 1 y i log 1 h x i lambda 2 m sum theta j 梯度 J theta t
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • 如何使用 MATLAB 的 substruct 函数创建表示使用“end”的引用的结构?

    我想使用substruct http www mathworks com help matlab ref substruct html函数创建一个结构体以供使用subsref 目的是使用索引字符串subsref而不是通常的 符号 因为我正在
  • 了解 fminunc 参数和匿名函数、函数处理程序

    请多多包涵 问题在最后 我试图找出 fminunc 调用方式的差异 这个问题源于 Andrew Ng 在他的 Coursera 机器学习课程中的第 3 周材料 我正在回答这个问题 Matlab Andrew Ng 机器学习课程中 t cos
  • MATLAB 中的霍夫变换

    有谁知道如何使用霍夫变换来检测二值图像中最强的线 A zeros 7 7 A 6 10 18 24 36 38 41 1 使用 rho theta 格式 其中 theta 以 45 为步长 从 45 到 90 以及如何在 MATLAB 中显
  • 图像处理 - 使用 opencv 进行服装分割

    我正在使用 opencv 进行服装特征识别 第一步 我需要通过从图像中移除脸部和手来分割 T 恤 任何建议表示赞赏 我建议采用以下方法 Use 阿德里安 罗斯布鲁克的用于检测皮肤的皮肤检测算法 谢谢罗莎 格隆奇以获得他的评论 在方差图上使用

随机推荐

  • MapReduce过程中setPartitionerClass、setSortComparatorClass和setGroupingComparatorClass三者关系

    Map首先将输出写到环形缓存当中 开始spill过程 job setPartitionerClass PartitionClass class 按key分区 map阶段最后调用 对key取hash值 或其它处理 指定进入哪一个reduce
  • 【测试开发】Junit 框架

    目录 一 认识 Junit 二 Junit 的常用注解 1 Test 2 Disabled 3 BeforeAll 4 AfterAll 5 BeforeEach 6 AfterEach 7 执行测试 三 参数化 1 引入依赖 2 单参数
  • 分析key原理

    总结 key是虚拟dom对象的标识 当数据发生变化时 vue会根据新数据生成新的虚拟dom 随后vue进行新虚拟dom与旧虚拟dom的差异比较 比较规则 旧虚拟dom中找到了与新虚拟dom相同的key 若虚拟dom中的内容没变 直接使用之前
  • 将一列具有相同数据的行合并到同一行

    如何将第一列具有相同数据的行合并到同一行 但要保护重复内容 将重复内容依次填充到重复行中第一行后面 首列相同的 将后面对应列各单元格内容合并到重复行中第一行后对应的单元格内 并且用 连接 对应列只有一个单元格有内容 则不添加 符号 若为空
  • 【sql】mysql索引问题笔记

    q 使用了索引就会有优化 a 然而并不是这样 一下情况都是没有作用的 1 索引字段并没有在查询条件中使用 2 条件查询的过滤结果占比过多 既索引字段为可重复的字段 常固发生此情况 3 对小表查询 此处指索引建立在小表上 联查到数据多的表的时
  • Android(java方法)上实现mp4的分割和拼接 (二)

    http blog csdn net banking17173 article details 20646251 这节谈一下如何在Android上实现mp4文件的高效率切割 业务需求举例 把一段2分钟的mp4文件切割出00 42 至 01
  • Hudi学习3:数据湖主流架构

    delta Lake Iceberg iceberg表可以扩展 Hudi 支持flink 并且支持快速upsert delete
  • VIM使用技巧专区汇总

    查找 set hlsearch 设置搜索高亮 something 在后面的文本中查找something something 在前面的文本中查找something pattern number 将光标停在包含pattern的行后面第numbe
  • 力扣:多数元素

    给定一个大小为 n 的数组 找到其中的多数元素 多数元素是指在数组中出现次数 大于 n 2 的元素 你可以假设数组是非空的 并且给定的数组总是存在多数元素 class Solution public int majorityElement
  • 频数表&频率表

    一 基本概念 1 频数表是将数据集按照某个特定列分类 分组 时观察每个类 组中数据出现次数的表 2 列联表是观测数据按两个或更多属性 定性变量分类时所列出的频数分布表 是由两个以上的变量进行交叉分类的频数分布表 3 频数也称 次数 对样本数
  • 关于this.$refs是undefined

    问题 最近在做开发的时候 遇到这样一个问题 从后端请求到一个图片列表 需要根据返回图片的情况设置元素的宽度 这就需要这样计算list的宽度imgList length imgElement clientWidth 为了在各种移动端自适应 不
  • opencv 解决ippicv下载问题,离线:ippicv_2019_lnx_intel64_general_20180723.tgz

    ippicv 2019 lnx intel64 general 20180723 tgz 这个下载超级慢 有设么用呢 硬件加速 人脸识别 说法不统一啊 以后再完善 下载超时怎么办呢 那我们就采取手动下载的模式然后离线安装 1 下载 ippi
  • UE4像素流

    UE4像素流 局域网 公网 文章目录 UE4像素流 局域网 公网 TOC 文章目录 前言 一 启用像素流 二 项目设置配置像素流参数以及打包 1 配置 打包 配置启动参数 启动像素流服务 信令服务器 http服务 80端口 8888端口 端
  • DDD的分层架构

    DDD作为一种指导思想 还是有一些相对来说可以落地的东西 比如说他这个分层架构 整体分为以下四层 实际上基于上图 我们可以把我们项目工程文件再具体一点 填写到上面的图片上 用户接口层 user interface 用户接口层负责向用户显示信
  • poi生成word文档,包含插入表格

    package com controller import java io FileInputStream import java io FileOutputStream import java io IOException import
  • 「京谈客服系统」出击:京东再起TO B战事

    对于企业而言 基于京谈的技术支持 企业能够获得的不仅仅是客服系统的优化重塑 更多的是把业务直接建立在京东对于客服系统的理解之上 从产业的视角重新定义自身客服体系 作者 皮爷 出品 产业家 数字化浪潮正滚滚而来 8月2日 财富 杂志发布了最新
  • PostgreSQL:“more than one owned sequence found“异常问题解决

    问题 本地数据库正常 但还原部署到服务器数据库后 添加表记录时提示 more than one owned sequence found 的异常报错 解决方案 这个问题是自增列引起的 可能迁移或还原数据表结构时出现异常 解决的办法是重置标识
  • 算法-分治算法

    文章目录 分治算法 什么是分治算法 分治算法的优点 分治算法的核心思想 分治算法的技巧 分治算法的边界 分治算法的常见题型及讲解 归并排序及逆序对问题 归并排序 逆序对问题 快速排序和第k小数 快速排序 第k小数 树的遍历 树的先序遍历 树
  • 高手需要具备的思维模型

    01 思维模型 决定了你的人生状态 电影 教父 中 有一句经典台词 花半秒钟看透本质的人 和花一辈子都看不清的人 注定拥有截然不同的命运 思维模型 决定了你的人生状态 2014年 张一鸣观察到移动互联网时代面临的问题 信息爆炸式增长的同时
  • MATLAB零基础入门(一)

    大家好 我是Henry 上一期的Python爬虫实践中 Henry导入了Matplotlib库进行了新冠疫情的每日新增的绘图 其实Matplotlib的原型是另一门应用非常广泛的语言 Matlab 最近Henry也学习了一些Matlab的绘