MATLAB基础篇(下)

news2024/11/25 4:00:42

本文为MATLAB基础篇(上)的后续。


 二、 MATLAB基本语法

7、基本绘图方法

Ⅰ、 MATLAB绘图的一般步骤

  1. 对数轴进行采样
  2. 对采样点计算相应的函数值, 得到平面(或空间)上的点的数据
  3. 运用绘图命令将数据进行图形化显示
x=-1:0.01:1;
%对数轴进行采样

y=sin(1./x);
%对每一个采样点, 计算对应的函数值

plot(x,y);
%将x,y表示的平面上的点用直线段连接起来

画出y=sin(1/x), x∈[-1,1]的图形,如下:

 Ⅱ、线型、点型和颜色

使用格式: plot(x,y,'绘图参数')

plot(x,y,'*b');  %点型为*,  颜色为蓝色
plot(x,y,':g');  %线型为虚线, 颜色为绿色
plot(x,y,'+-r');  %点型为+,线型为实线, 颜色为红色

                                                                     MATLAB绘图参数表

线型

说明

点型号

说明

颜色

说明

-

实线(默认)

+

加号符

r

红色

--

双划线

o

空心圆

g

绿色

:

虚线

*

星号

b

蓝色

:.

点划线

.

实心圆

c

青绿色

 

 

x

叉号符

m

洋红色

 

 

s

正方形

y

黄色

 

 

d

菱形

k

黑色

 

 

^

上三角形

w

白色

 

 

v

下三角形

 

 

 

 

>

右三角形

 

 

 

 

<

左三角形

 

 

 

 

p

五角星

 

 

 

 

h

六边形

 

 

 Ⅲ、多条曲线的绘制

有多种方法在一张图上显示多条曲线, 这里介绍两种方法

(1)用plot(x1,y1,x2,y2,…)命令

t=0:0.5:4*pi;
y=exp(-0.1*t).*sin(t);
y1=exp(-0.1*t).*sin(t+1);
plot(t,y,t,y1);

 (2)用hold on命令

在执行一次绘图命令合, 使用hold on命令保持当前画板, 使得后面绘制的图形在当前画板上.

t=0:0.5:4*pi;
y=exp(-0.1*t).*sin(t);
y1=exp(-0.1*t).*sin(t+1);
plot(t,y);
hold on
plot(t,y1);
hold off

 Ⅳ、三维曲线和曲面

(1)绘制三维曲线

格式: plot3(x,y,z)

z=0:0.1:4*pi;
x=cos(z);
y=sin(z);
plot3(x,y,z);

 (2) 绘制三维曲面

步骤:

  1. 分别对x,y轴进行采样;
  2. 生成x-y平面网格;
  3. 计算网格点对应的z值;
  4. 用三维曲面绘图命令绘图
x=-8:0.5:8;
y=-8:0.5:8;
[X,Y] = meshgrid(x,y);
R = sqrt(X.^2+Y.^2)+eps;            
Z = sin(R)./R;
mesh(X,Y,Z);

注:在上述公式中,eps是一个非常小的数,通常被称为“机器精度”(machine epsilon)。它用于避免在计算机程序中出现除以零的错误 

                                               常用绘图命令

plot

线性X-Y坐标绘图

legend

标注图例

axis

控制坐标轴比例和外观

plot3

三维曲线作图

hold on

保持当前画板

meshgrid

生成网格

hold off

释放当前画板

mesh

三维曲面作图

title

标题

surf

三维曲面作图

xlabel

X轴标注

meshc

加等高线的三维曲面作图

ylabel

Y轴标注

surfc

加等高线的三维曲面作图

textt

在图上标文字

contour

平面等高线

grid on

图上加坐标网格

contour3

三维等高线

grid off

去掉网格

subplot

子图

8、逻辑运算

MATLAB的逻辑值有真(TRUE)和假(FALSE), 可以通过逻辑表达式或直接输入得到. 输入和显示时用0表示逻辑假, 1表示逻辑真. 浮点数和逻辑值可以互相转换.

                                                    浮点数与逻辑值的相互转换

                           

                                                      关系运算及逻辑运算符

 

符号

意义

符号

意义

符号

意义

>

大于

<

小于

>=

大于或等于

<=

小于或等于

==

等于

~=

不等于

&

逻辑与

|

逻辑或

~

逻辑非

&&

逻辑与(短路)

||

逻辑或(短路)

xor

逻辑异或

A=[0 0 1 1]
B=[0 1 0 1]

A&B                 与                              
A|B                 或
~A                  非
xor(A, B)         异或
G=magic(6)        魔方矩阵
rem(G,2)          G的元素整除2的余数
p=(rem(G, 3)==0)     判断元素是否是0
u=p|~p            两个逻辑数组对应元素进行运算

得到:
A =

     0     0     1     1


B =

     0     1     0     1


ans =

  1×4 logical 数组

   0   0   0   1


ans =

  1×4 logical 数组

   0   1   1   1


ans =

  1×4 logical 数组

   1   1   0   0


ans =

  1×4 logical 数组

   0   1   1   0


G =

    35     1     6    26    19    24
     3    32     7    21    23    25
    31     9     2    22    27    20
     8    28    33    17    10    15
    30     5    34    12    14    16
     4    36    29    13    18    11


ans =

     1     1     0     0     1     0
     1     0     1     1     1     1
     1     1     0     0     1     0
     0     0     1     1     0     1
     0     1     0     0     0     0
     0     0     1     1     0     1


p =

  6×6 logical 数组

   0   0   1   0   0   1
   1   0   0   1   0   0
   0   1   0   0   1   0
   0   0   1   0   0   1
   1   0   0   1   0   0
   0   1   0   0   1   0


u =

  6×6 logical 数组

   1   1   1   1   1   1
   1   1   1   1   1   1
   1   1   1   1   1   1
   1   1   1   1   1   1
   1   1   1   1   1   1
   1   1   1   1   1   1

 魔方阵是一个矩阵,其中每行、每列以及对角线上的所有元素之和都相等。请注意,魔方阵只能在方阵(即行数等于列数)中生成。在生成魔方阵时,算法会优化使得每行、每列和对角线之和都相等。这使得生成的魔方阵在数学和游戏等领域具有一些特殊的性质和用途。

A = rand(4,4)
B = A<0.5
C = A(B)
R = find(A<0.5)
得到:
A =

    0.7094    0.6551    0.9597    0.7513
    0.7547    0.1626    0.3404    0.2551
    0.2760    0.1190    0.5853    0.5060
    0.6797    0.4984    0.2238    0.6991


B =

  4×4 logical 数组

   0   0   0   0
   0   1   1   1
   1   1   0   0
   0   1   1   0


C =

    0.2760
    0.1626
    0.1190
    0.4984
    0.3404
    0.2238
    0.2551


R =

     3
     6
     7
     8
    10
    12
    14

9、流程控制语句

(1)if语句

格式一:

if (表达式)

语句组A;

end

格式二:

if (表达式1)

    语句组A;

else

    语句组B;

end

格式三:

if (表达式1)

    语句组A;

elseif (表达式2)

    语句组B;

else   

    语句组C;

end

(2) while语句

格式:

while  (表达式)

  语句组;

end

举例:求MATLAB相对精度,y不断减小,直至MATLAB分不出1+y与1的差别为止。

y=1;
while (1+y)>1
    y1=y;
    y=y/2;
end
y1 
得到:
y1 =

   2.2204e-16

(3) for语句

格式:

for k= 初值:增量:终值

    语句组;

end

举例:显示三角函数表

for x=0:0.1:pi/4
    disp([x, sin(x), cos(x), tan(x)])
end
得到:
 0     0     1     0

    0.1000    0.0998    0.9950    0.1003

    0.2000    0.1987    0.9801    0.2027

    0.3000    0.2955    0.9553    0.3093

    0.4000    0.3894    0.9211    0.4228

    0.5000    0.4794    0.8776    0.5463

    0.6000    0.5646    0.8253    0.6841

    0.7000    0.6442    0.7648    0.8423

10、M程序及M函数

  • MATLAB的程序通常用后缀名为m的文本文件来保存, 所以 可以用任何文字编辑工具来创建和编写.  MATLAB程序可直接调用M文件并执行.
  • M文件分为两种: 一种是M程序, 为用户解决特定的问题编制的, 可以独立执行;另一种是M函数, 用来完成相对独立的子功能, 不能独立执行.  MATLAB软件的大部分功能是来自其建立的函数集.
  • 在MATLAB中创建M程序和M函数的方法是相同的. 点击菜单“File→New → M-File”, 打开文本编辑器, 程序编写完成后, 点击 按纽         即可执行.  程序的输出结果在命令窗口.
  • 通常用户建立的M程序和M函数存放在当前目录中, MATLAB可以自动搜索到.

(1) M程序

M程序特征:

由一般语句组成, 程序中的变量是全局的, 可以在MATLAB命令窗口输入文件名来执行.

举例:

%列出一个求fibonnaci数的程序, 它是一个数列, 从[1,1]开始, 由数列的最后两个元素之和生成新的元素, 依次递推

f=[1,1]; 
i=1;
N=10;
while f(i)+f(i+1)<N  %循环条件检验
    f(i+2)=f(i+1)+f(i); %求fibonnaci数的算式
    i=i+1;  
end
f
得到:
f =

     1     1     2     3     5     8

 (2) M函数

M函数特征:

  1. 由function起头, 后面跟的函数名, 函数名必须与文件名相同.
  2. 有输入输出变量, 可以进行变量传递.
  3. 除非用global声明, 程序中的变量均为局部变量, 不保存在工作空间中.
  4. M函数不能独立运行, 必须由其它程序调用.

一般格式:function y=FunctionName(x)

举例:

%求fibonnaci数的函数
function f = fib(n)
if n <= 2
    f = 1;
else
    f = fib(n-1) + fib(n-2);
end

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux之基础git命令的使用

Linux之基础git命令的使用 提交第一步提交第二步提交第三步查看历史提交记录查看是否需要提交过滤提交时的文件 git命令的初始使用 在使用之前&#xff0c;我们先确定我们的xshell是否安装的git&#xff0c;需要输入命令 git --version 如果没有显示版本号&#xff0c;则需要进…

【操作系统】c语言--使用信号量解决生产者和消费者问题

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

Vue--》Vue3打造可扩展的项目管理系统后台的完整指南(九)

今天开始使用 vue3 ts 搭建一个项目管理的后台&#xff0c;因为文章会将项目的每一个地方代码的书写都会讲解到&#xff0c;所以本项目会分成好几篇文章进行讲解&#xff0c;我会在最后一篇文章中会将项目代码开源到我的GithHub上&#xff0c;大家可以自行去进行下载运行&…

Eclipse配置JVM启动参数

【参考】Eclipse设置jvm参数的三种方式

git、gitlab、github在windows下通用的操作笔记

前言&#xff1a;命令是在Git Bash 下输入的命令&#xff0c;GUI部分涉及到小乌龟git&#xff0c;可以自行安装&#xff0c;不同版本有差异&#xff0c;用git的新手也可以尝试 SourceTree 提供漂亮的图形化界面操作&#xff08;但是卡顿坑多&#xff0c;需三思&#xff09; 1、…

7月11入伏,进入三伏天dog days

三伏天&#xff0c;是一年中最热的日子,今年的三伏天始于7月11日。sanfu, the hottest time of the year begins on July 11th this year. 三伏&#xff0c;也称为中国的dog days,预示着一年中最热的三个阶段&#xff0c;每一阶段大约有10-20天。Sanfu, also called Chinas &qu…

基于FreeRTOS的嵌入式设备管理关键技术研究及实现(学习五重要)

操作系统任务框架 系统任务 空闲任务几乎存在于所有的嵌入式实时操作系统&#xff0c;用户无法自行关闭空闲任务。 空闲任务的作用主要是减少核心芯片的使用率&#xff0c;避免核心芯片的负载压力过大&#xff0c;保证系统的低功耗运行。 时钟节拍任务控制系统的延时函数和等待…

matlab画拟合直方图的脚本

都是一些简单的作图参数&#xff0c;可以自己按照matlab官方的指导去改style https://ww2.mathworks.cn/help/stats/histfit.html %-----------------------------------------------------------------------------------------------------------% %-----Function: Plot a h…

Proteus8.15 安装包下载及详细安装

Proteus8.15 安装包下载及详细安装 1.安装包链接&#xff0c;需要可自取&#xff0c;也可自行去官方下载最新版本 链接: https://pan.baidu.com/s/1Zcdr1hFo2RHCw88CXtY2bQ?pwdbuz6 提取码: buz6 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 –来自百度网盘超…

Redis 高可用和优化(主从复制、哨兵、集群)

目录 一&#xff1a;Redis 高可用 二&#xff1a; Redis 持久化 1、持久化的功能 2、Redis 提供两种方式进行持久化 3、 RDB 持久化 &#xff08;1&#xff09;触发条件 &#xff08;1.1&#xff09;手动触发 &#xff08;1.2&#xff09;自动触发 &#xff08;1.3&am…

[SSM]MyBatis常用技巧和参数处理

目录 八、MyBatis小技巧 8.1#{}和${} 8.2别名机制&#xff1a;typeAliases 8.3mappers ​编辑 8.4IDEA配置文件模板 8.5插入数据时获取自动生成的主键 九、MyBatis参数处理 9.1单个简单参数类型 9.2Map参数 9.3实体类参数 9.4多参数 9.5Param注解&#xff08;命名…

面向对象五大基本原则

面向对象五大基本原则 更多精彩 先案例后讲解&#xff0c;这里是代码教父&#xff0c;今天讲解面向对象的五大基本原则&#xff1a; 单一职责原则&#xff08;The Single Responsibility Principle&#xff09;开闭原则&#xff08;The Open-Closed Principle&#xff09;里氏…

javassit 01

Javassist&#xff1a; Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba &#xff08;千叶 滋&#xff09;所创建的。它已加入了开放源代码JBoss 应用服务器项目&#xff0c;通过使用Javassist对字节码操作为JB…

Java SSM 重制版(三)SpringSecurity

SpringSecurity 基于Spring6的重制版&#xff0c;截止目前&#xff0c;最新的版本是6.1.1版本。 前置课程&#xff1a;《Spring核心内容》《SpringMvc》《JavaWeb》《Java9-17新特性》 安全是开发者永远绕不开的话题&#xff0c;一个不安全的网站&#xff0c;往往存在着各种…

主机与虚拟机ubuntu网络无法ping通问题

一. 主机与虚拟机无法ping通问题 在嵌入式开发中&#xff0c;经过会涉及网络方面的问题。最常用到的是开发板在 虚拟机&#xff08;ubuntu&#xff09;通过NFS服务挂载到ubuntu中&#xff0c;这里就涉及网络是否可以ping通问题。 开发板 ping 通 ubuntu虚拟机系统的前提&…

基于matlab使用视频和深度学习进行手势识别(附源码)

一、前言 此示例首先演示如何使用预训练的SlowFast视频分类器执行手势识别&#xff0c;然后演示如何使用迁移学习在自定义手势识别数据集上训练分类器。 基于视觉的人类手势识别涉及使用一组视频帧预测手势&#xff0c;例如挥手打招呼、手语手势或鼓掌。手势识别的一个吸引人…

启动失败之源发行版 17 需要目标发行版 17

一、java: 警告: 源发行版 17 需要目标发行版 17 1.1.原因 :JDK 版本不对。 这里可以看到&#xff0c;项目需要的是JDK17&#xff0c;而我这里用的是JDK1.8。 1.2.修改 这里有两种操作&#xff0c;一种是修改项目版本&#xff0c;一种是修改JDK版本。无论是哪一种&#xff0…

CentOS7使用ping命令测试主机或者外部网络不通(已解决)

CentOS7使用ping命令测试主机或外部网路显示“目标主机不可达”或者其他原因失败。 说明 当尝试了所有修改配置&#xff0c;关闭防火墙等操作之后&#xff0c;还是没有成功的条件下。 查看计算机中的VMware相关的服务是否打开。 此电脑–右击–管理–服务与应用程序–服务 …

【小吉带你学Git】Git命令(用户签名,本地库,暂存区,文件,版本 等命令)

&#x1f38a;专栏【Git】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f33a;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;设置用户签名⭐命令⭐如何在Windows上面查看自己的签名 &am…

eNSP-静态路由表的配置

eNSP-静态路由表的配置 文章目录 eNSP-静态路由表的配置一、拓扑结构二、关键语句三、完整代码四、测试验证 一、拓扑结构 二、关键语句 ip route-static x.x.x.x y z.z.z.z 语法&#xff1a;目标网段 掩码 下一跳 例如 PC1所在网段访问PC2所在网段 在AR1中输入 ip route-st…