零基础快速入门MATLAB

文章目录

  • 前言
  • 1.向量
    • 1.1 创建方式
      • 1.1.1 直接输入各个元素
      • 1.1.2 冒号创建
      • 1.1.3 使用linspace函数
    • 1.2 向量的运算
      • 1.2.1 加法
      • 1.2.2 相乘
  • 2.输入与输出
    • 2.1 输入函数--input()
    • 2.2 输出函数
  • 3.分支结构
    • 3.1 if语句
    • 3.2 switch语句
  • 4.循环结构
    • 4.1 for循环
    • 4.2 while循环
    • 4.3 特殊语句
  • 5.函数体
  • 6.绘图函数
    • 6.1 plot()函数
    • 6.2 subplot()函数
    • 6.3 stem()函数
    • 6.4 scatter()函数
    • 备注
  • 7.特殊的矩阵函数
    • 7.1 全零矩阵
    • 7.2 全1矩阵
    • 7.3 随机矩阵
      • 7.3.1 rand()函数
      • 7.3.2 randn()函数
  • 结语

前言

在学习基于matlab仿真的数字图像处理教程之前,需要我们对matlab的基本语法有一定的了解,本篇博客带你快速入门matlab编程语言。

1.向量

可以简单理解为一个一维数组

1.1 创建方式

1.1.1 直接输入各个元素

[]包裹整个数组,元素之间用空格或者逗号隔开(行向量),元素之间用分号隔开(列向量),也可以混合使用用来生成矩阵
在这里插入图片描述

1.1.2 冒号创建

格式:x=开始:间隔:结尾
间隔可以省略,默认是1

在这里插入图片描述

1.1.3 使用linspace函数

格式:linspace(开始,结束,元素个数)
元素个数默认为100个

在这里插入图片描述

1.2 向量的运算

1.2.1 加法

直接对应元素相加即可
在这里插入图片描述

1.2.2 相乘

向量乘法,即向量内积
a·b=a1b1+a2b2+……+anbn
将该运算定义为.*(点乘)
在这里插入图片描述
matlab中还定义了dot()函数,将点乘结果进行相加,相当于sum(ans)

在这里插入图片描述

2.输入与输出

2.1 输入函数–input()

input函数:用于在命令行获取用户输入的数值、字符串或表达式等,并将其作为变量的值。
格式:value = input('提示信息');这里的提示信息是显示给用户的文本,提示用户输入内容。用户输入完成后,按下回车键,输入的内容将被赋给value变量。

num = input('请输入一个数字:');
str = input('请输入一个字符串:');
expr = input('请输入一个表达式:');
keyboard; % 用于调试使用
disp(num);

运行结果:
在这里插入图片描述

2.2 输出函数

disp函数:用于在命令行显示变量的值、文本信息等。它会自动换行显示内容,并且不会显示变量名,只显示其值。
fprintf函数:按照指定的格式将数据输出到命令行或文件中。它可以对输出内容进行格式化,使其更加规范和美观。

num = 10.2346;
str = 'Hello, MATLAB!';
disp(num);
disp(str);
fprintf('数字:%.2f,字符串:%s\n', num, str);

在这里插入图片描述

3.分支结构

3.1 if语句

语法:if 表达式
			语句
	  elseif 表达式
			语句
	  else 
			语句
	  end

此案例没有任何意义,只是单纯为了使用分支结构,和其他语言类似

a=2;
b=3;
if(a>b)
    result=a-b;
elseif(a==b)
    result=a*b;
else
    result=a+b;
end
disp(result);

3.2 switch语句

语法:switch expression
		case value1
    		% 当expression的值等于value1时执行的语句
		case value2
    		% 当expression的值等于value2时执行的语句
 		  ...
	    case valueN
    		% 当expression的值等于valueN时执行的语句
		otherwise
    		% 当expression的值不等于前面任何一个case的值时执行的语句
	end
clear all;
clc;
score =input("请输入你的成绩:");
if score>=90
    flag="A";
elseif score>=80
    flag="B";
elseif score>=60
    flag="C";
elseif score<60&&score>=0
    flag="D";
else
    disp("非法输入");
end

switch flag
    case 'A'
        disp("太棒了,你的成绩优秀哎");
    case 'B'
        disp("你的成绩良好,希望你能继续加油哦")
    case 'C'
        disp("你的成绩及格,下学期加把劲吧")
    otherwise
        disp("成绩不合格,记得及时查看补考信息")
end


运行结果:
在这里插入图片描述

4.循环结构

4.1 for循环

语法格式:

for 循环变量 = 起始值:步长:终止值		% 步长默认是1
    % 循环体,这里是要重复执行的代码块
end
for a=1:2:5
    disp(a)
end

4.2 while循环

while 条件表达式
    % 循环体,要重复执行的代码块
end
i = 1;
while i <= 10
    disp(i);
    i = i + 1;
end

4.3 特殊语句

break语句:跳出循环语句
continue语句:跳出当前循环,执行下一次循环

5.函数体

函数一般在.m文件中编写,由function语句引导,基本结构为:

function [输出参数1, 输出参数2,...] = 函数名(输入参数1, 输入参数2,...)
    % 函数体:在这里进行各种计算、操作等,以实现函数的功能
    % 根据输入参数计算得到输出参数的值
end
function z = f(x,y)
%   该函数计算|x|+|y|,并将结果返回给z
if x>=0&&y>=0
    z=x+y;
elseif x<=0&&y>=0
    z=y-x;
elseif x>=0&&y<=0
    z=x-y;
else
    z=-(x+y);
end

6.绘图函数

6.1 plot()函数

plot(X,Y) 创建 Y 中数据对 X 中对应值的二维线图。
要绘制由线段连接的一组坐标,请将 X 和 Y 指定为相同长度的向量。
xlabel:设置X轴标签
ylabel:设置Y轴标签
title:设置图像标题
grid on:显示网格信息
axis设置坐标轴范围

x=0:0.01:2*pi;
y=sin(x);

plot(x,y)
grid on;% 显示网格
xlabel("x");% 设置x轴标签
ylabel("sin(x)")% 设置y轴标签
title("函数y=sin(x)")% 设置标题
axis([0 2*pi -1.5 1.5]) %设置横纵坐标显示范围
axis square %生成正方形图

运行结果:
在这里插入图片描述
也可以画多条函数图像

x1=0:0.01:10;
x2=-pi/2:0.01:pi*2;
y1=sin(x1);
y2=cos(x2);
plot(x1,y1,x2,y2,'.-')
legend("sin(x)","cos(x)")% 设置图例

运行结果:
在这里插入图片描述

因为它是连续图像,所以在选择X时尽可能的将步长调小,否则画出的图像就有明显的折线效果
在这里插入图片描述
另外,你也可以设置线条颜色
在这里插入图片描述

6.2 subplot()函数

subplot(m,n,p) 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。
代码部分:

x1=0:0.01:10;
x2=-pi/2:0.01:pi*2;
y1=sin(x1);
y2=cos(x2);
subplot(2,2,3);% 分成一行两列,第一个位置
plot(x1,y1,'r');
subplot(2,2,2);% 分成一行两列,第二个位置
plot(x2,y2,'g');

在这里插入图片描述

6.3 stem()函数

stem()函数:用来绘制离散序列数据,也是数字信号中使用较多的函数,将数据序列 Y 绘制为从沿 x 轴的基线延伸的针状图
subplot函数同样适用stem函数,语法情况保持一致
示例代码:

x1=0:0.5:10;
x2=-pi/2:0.5:pi*2;
y1=sin(x1);
y2=cos(x2);
subplot(2,2,3);% 分成一行两列,第一个位置
stem(x1,y1,'r','filled');
subplot(2,2,2);% 分成一行两列,第二个位置
stem(x2,y2,'g');

运行结果:
在这里插入图片描述

6.4 scatter()函数

scatter函数:在向量 x 和 y 指定的位置创建一个包含圆形标记的散点图。
subplot函数同样适用
示例代码:

x1=0:0.5:10;
x2=-pi/2:0.5:pi*2;
y1=sin(x1);
y2=cos(x2);
subplot(2,2,3);% 分成一行两列,第一个位置
scatter(x1,y1,'r','filled');
subplot(2,2,2);% 分成一行两列,第二个位置
scatter(x2,y2,'g');

运行结果:
在这里插入图片描述

备注

上述函数均使用的是向量,所以在画图时,需要将两个向量的长度保持一致,否则会报错,具体可以用length()函数或者size()函数查看向量长度

7.特殊的矩阵函数

7.1 全零矩阵

zeros(M)函数:生成M x M大小的全零矩阵
zeros(M,N)函数:生成M x N大小的全零矩阵
在这里插入图片描述

7.2 全1矩阵

ones(M)函数:生成M x M大小的全1矩阵
ones(M,N)函数:生成M x N大小的全1矩阵
也可以使用矩阵和一个标量相加减,来构造任何元素的矩阵
在这里插入图片描述

7.3 随机矩阵

7.3.1 rand()函数

rand(M)函数:生成M x M大小的随机矩阵,元素在(0,1)之间服从均匀分布
rand(M,N)函数:生成M x N大小的随机矩阵,元素在(0,1)之间服从均匀分布
在这里插入图片描述

7.3.2 randn()函数

randn(M)函数:生成M x M大小的随机矩阵,元素服从均值为0,方差为1的正态分布
randn(M,N)函数:生成M x N大小的随机矩阵,元素服从均值为0,方差为1的正态分布
在这里插入图片描述
备注:也可以通过与标量的乘法或加法调节生成的范围

结语

本篇博客介绍了matlab的基本语法,适用于没学过该编程语言,快速入门的基于matlab仿真的数字信号处理实验,本篇博客在介绍时,并未对各种函数的各种参数展开讲解,需要时可以查看官方文档,更适合,更高效。希望本篇快速的matlab能够对你有所帮助!!!感谢支持!!!

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

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

相关文章

gitmakegdb

git git reset 命令 | 菜鸟教程 (runoob.com) 像嫁接一样 make Makefile | 爱编程的大丙 (subingwen.cn) # 举例: 有源文件 a.c b.c c.c head.h, 需要生成可执行程序 app ################# 例1 ################# app:a.c b.c c.cgcc a.c b.c c.c -o app################# 例…

记一次微信云托管搭建Redis服务

背景 最近在做一个微信小程序&#xff0c;规划服务全部部署在云托管上面&#xff0c;本次使用了对象存储、mysql、java服务、Redis服务&#xff08;pc端用的&#xff09;。 由于对部署Redis不理解&#xff0c;查看了官方文档&#xff0c;首先看到的是这个架构图&#xff0c;看…

gerrit 搭建遇到的问题

1、启动Apache&#xff0c;端口被占用 : AH00072: make sock: could not bind to address (0S 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。: AH00072: make sock: could not bind to address 0.0.0.:443 a AH00451: no listening sockets available, shutti…

STM32之看门狗

STM32有独立看门狗&#xff08;IWDG&#xff09;和窗口看门狗(WWDG)。 采用窗口看门狗&#xff08;WWDG&#xff09;&#xff0c;有一个死前中断&#xff0c;可以用来作一个报警的功能。 独立看门狗超时时间计算公式 假设LSI是32KHz,超时时间等于 预分频系数&#xff08;4&…

Python爬虫基础-正则表达式!

前言 正则表达式是对字符串的一种逻辑公式&#xff0c;用事先定义好的一些特定字符、及这些特定字符的组合&#xff0c;组成一个“规则的字符串”&#xff0c;此字符串用来表示对字符串的一种“过滤”逻辑。正在在很多开发语言中都存在&#xff0c;而非python独有。对其知识点…

lvgl白屏问题(LCD长时间白屏)和优化lvgl

开机白屏时间过长 -- 这里我们不考虑是lvgl占的内存太大的问题&#xff0c;这里考虑的是为什么lcd屏幕启动后会有长时间的白屏。 首先我们要了解lvgl的相关操作&#xff0c;主要集中在一个函数中。只有程序执行到了这个函数&#xff0c;lvgl的屏幕才会显现出来 总结来说就是l…

雷池社区版 7.1.0 LTS 发布了

LTS&#xff08;Long Term Support&#xff0c;长期支持版本&#xff09;是软件开发中的一个概念&#xff0c;表示该版本将获得较长时间的支持和更新&#xff0c;通常包含稳定性、性能改进和安全修复&#xff0c;但不包含频繁的新特性更新。 作为最受欢迎的社区waf&#xff0c…

【系统分析师】-案例综合知识大全

1、表示处理流程的工具 图形工具、表格工具和语言工具。 其中常见的图形工具包括程序流程图、IPO 图、盒图、问题分析图、判定树&#xff0c; 表格工具包括判定表&#xff0c; 语言工具包括过程设计语言 2、用例建模过程 识别参与者、合并需求获得用例、细化用例描述和调…

python爬取旅游攻略(1)

参考网址&#xff1a; https://blog.csdn.net/m0_61981943/article/details/131262987 导入相关库&#xff0c;用get请求方式请求网页方式&#xff1a; import requests import parsel import csv import time import random url fhttps://travel.qunar.com/travelbook/list.…

G. Welcome to Join the Online Meeting!【CCPC2024哈尔滨站】

G. Welcome to Join the Online Meeting 思路: 挺简单的BFS思路 图论题写的比较少&#xff0c;算是补题吧 代码: #include <bits/stdc.h> #define endl \n #define int long long #define pb push_back #define pii pair<int,int> const int MOD 1e97; const …

《图像滤波算法综述》

一、引言 在数字图像处理的世界里&#xff0c;滤波是一项关键技术。通过对图像应用滤波算法&#xff0c;可以有效去除噪声、增强图像的细节并显著提升图像质量。本篇内容将为您深入介绍几种常见的图像滤波算法及其原理和应用场景。 二、图像滤波算法的分类 图像滤波算法可以…

RK3568开发板静态IP地址配置

1. 连接SSH MYD-LR3568 开发板设置了静态 eth0:1 192.168.0.10 和 eth1:1 192.168.1.10&#xff0c;在没有串口时调试开发板&#xff0c;可以用工具 SSH 登陆到开发板。 首先需要用一根网线直连电脑和开发板&#xff0c;或者通过路由器连接到开发板&#xff0c;将电脑 IP 手动设…

(蓝桥杯C/C++)——基础算法(上)

目录 一、二分法 1.二分法简介 二分法简介-解题步骤 2.整数二分-简介 整数二分-模板 3.浮点二分-简介 浮点二分-模板 4.二分答案-简介 二分答案-模板​​​​​​​ 二、位运算 1.位运算简介 2.常见的位运算 按位与AND(&) 按位或OR( | ) 按位异或…

【RAG系列】KG-RAG 用最简单的方式将知识图谱引入RAG

目录 前言 一、引入知识图谱的作用 二、引入知识图谱的挑战 三、KG-RAG的理论 query多跳有限性 知识局部密集性 四、KG-RAG的方法 向量入库 向量相似搜索 扩展子图 LLM Rerank LLM response 五、效果比对 六、源码 总结 前言 本文介绍一种比较新颖的RAG范式&am…

6.《双指针篇》---⑥和为S的两个数字(中等但简单)(牛客)

题目传送门 方法一&#xff1a;暴力解法。双循环 方法二&#xff1a;双指针&#xff08;推荐&#xff09; 1.定义一个顺序表&#xff0c;定义左右双指针 2.while循环。判断array[left] array[right] 的值。 3.若等于则将这两个值加入数组。并break 4.若大于则right-- 5.若小于…

【学术论文投稿】Python网络爬虫全攻略:从零到一,打造你的数据收集利器

【IEEE出版 | 中国石油大学&#xff08;华东&#xff09;主办】第六届信息与计算机前沿技术国际学术会议(ICFTIC 2024)_艾思科蓝_学术一站式服务平台 更多学术会议论文投稿请看&#xff1a;https://ais.cn/u/nuyAF3 目录 引言 什么是网络爬虫&#xff1f; Python网络爬虫的…

LWIP通信协议UDP发送、接收源码解析

1.UDP发送函数比较简短&#xff0c;带操作系统和裸机一样。以下是udp_sendto源码解析&#xff1b; 2.LWIP源码UDP接收数据 2.1.UDP带操作系统接收数据&#xff0c;以下是源码解析&#xff1b; 2.2.UDP裸机接收数据&#xff0c;以下是源码解析

3^100的位数判断

3^100的位数判断 问题来源 字节面试&#xff0c;面试官提问&#xff1a;口算估计3^100的位数&#xff0c;或是给出位数估计范围。 解决方案 方法一&#xff1a; 该方法纯口算&#xff0c;可得一个较为准确的一个范围 2 100 < 3 100 < 4 100 2^{100}<3^{100}<…

Vue2进阶之Vue3高级用法

Vue3高级用法 响应式Vue2&#xff1a;Object.definePropertyObject.definePropertythis.$set设置响应式 Vue3&#xff1a;Proxy composition APIVue2 option API和Vue3 compositionAPIreactive和shallowReactivereadonly效果toRefs效果 生命周期main.jsindex.htmlLifeCycle.vue…

大微DW421专为电子雾化器设计的大功率MEMS硅麦咪头芯片

在电子雾化器领域&#xff0c;一款高性能、高稳定性的咪头是实现优质用户体验的关键。大微DW421功率咪头&#xff0c;广泛应用在电子雾化类设备的21W大功率集成硅麦咪头芯片&#xff0c;集成了最新的MEMS硅基膜微机电系统技术&#xff0c;赋予了咪头更高的灵敏度和稳定性&#…