Matlab零基础入门

2023-11-17

前言:本篇是随笔,一段时间没用Matlab,简单复习了下,都是入门知识,零基础可读



1. 初步认识界面和命名

image-20220526175834052

四个区:文件区、命令行窗口、编辑器以及工作区

1.1 建立脚本(即编辑器),后进行命令;

1.2 脚本名称不保存就输入内容会在文件夹的名字右上角显示*号;

image-20220526180152465

1.3 变量名必须以字母开头

1.4 文件名建议最好是字母开头。

组成:字母、数字、下划线

1.5 编辑器内选中所需执行内容,右键可单独进行执行

1.6 Matlab所有的索引 index都是从1开始的,对于非码农而言的科研人员相当友好。

2. 数据类型和矩阵

2.1 数据类型

五种:数字;字符和字符串;矩阵;元胞数组;结构体

2.2 clc 和 clear all的区别

clc : 清除命令行窗口的所有命令

clear all : 清楚工作区的所有变量

2.3 注释:matlab软件的注释跟C++、Java这类语言还不一样, %%是横线加粗的注释 %是普通注释

2.4 加减乘除,+ - * /

2.5 字符串: 用单引号引起来(注意区分C++的双引号)。

image-20220526181500029

2.6 区分 abs 、char 、num3str 把数字转换为字符串

对字符操作的话,abs是ASCII转10进制,char10进制转ASCII。

备注:abs函数:数值的绝对值和复数的模值, 函数的定义域包括复数。

“num2str(65)”是把数字65,转换成字符串‘65’

2.7 length计算字符串长度 length(s)

类似其他语言的length

2.8 矩阵运算

定义矩阵:

 A=[1 2 3;4 5 6; 7 8 9]

image-20220526182816428

转置矩阵:

B=A'

image-20220526182849035

拉长矩阵(竖向拉长):

 C=A(:)

image-20220526183058410

求逆矩阵 :

D=inv(A)

image-20220526183223098

生成全0的矩阵:

 E=zeros(4,2,3)   

E矩阵3维,4行, 3列 全为0

image-20220526183531736

2.9 rand、randi和randn的区别

image-20220526183744609

演示几个:

在一维生成随机数,随机数范围是0~1

E(:,:,1) = rand(4,2)    

image-20220526184131659

在二维生成随机数,随机数范围0~10

 E(:,:,2) = randi(10,4,2)

image-20220526184230231

在三维生成标准正态分布的随机数

E(:,:,3) = randn(4,2)

image-20220526184450475

3.元胞数组和结构体

3.1 元胞数组

类似C++中的结构体类型

例:

A = cell(1, 6)

image-20220526185338906

image-20220526184648462

3.2 eye(3)

生成3行3列单位矩阵(对角线为1,其余为0)

A{2}=eye(3)

image-20220526185731074

3.3 magic

生成n阶幻方,无论横竖斜三个方向上的三个数的和总是相同的。

把3*3的幻方矩阵放入A的第一个盒子

A{1}= magic(3)   

image-20220526185945115

image-20220526190044975

3.4 结构体

注意下初始化方式略有不同,可以理解成键值对。

books=struct('name',{{'machine learning','data mining'}},'price',[30,40])

image-20220526190339169

books.name

image-20220526190458214

books.name(1)     得到cell

image-20220526190525262

image-20220526190825026

books.name{1}    得到字符串

image-20220526190556090

image-20220526190759310

4. 矩阵构造和四则运算

4.1 矩阵构造

 B=1:2:9  

1-9 步长为2递增跳转

image-20220526191011979

c=repmat(B,3,2)

把B竖着重复三次,横着重复两次

可以理解成把B当成一个最基本的数据,重复B创建一个新的3行2列的矩阵

image-20220526191227968

D=ones(2,4) 

两行四列全1的矩阵,其它可在此基础上乘响应的倍数

4.2 矩阵运算

注意下点乘就行

A .* B 对应项相乘
A. / B 对应项相除
A / B 矩阵相除,可以理解成A乘上B的逆矩阵。

4.3 矩阵的下标

注意一点,跟C++的二维数组不同的点在于,matlab矩阵的下标起点为1

A = magic(3)

B = A(1,1)

image-20220526192619063

B=A(:,3)   第三列所有行

image-20220526192741155

C=A(3,:)   取第三行所有列

image-20220526192756718

b=A(:,[1,3]) 取所有行,第1,3列

c=A([2,3],[1,2]) 取第2,3行,以及1,2列

4.4 find的用法:

返回矩阵或向量中非零元素的索引

[m,n]=find(A>5)

返回非零元素下标 find(vector)   m行n列

image-20220526193110533

5.逻辑与流程控制

这块没啥注意的,逻辑和C语言类似。

5.1 if end 分支结构

if else end

image-20220526195138063

5.2 for end

image-20220526193447849

例:

image-20220526193522577

和其他语言一样,matlab的for循环也可以嵌套for循环

例:

image-20220526194658975

5.3 while end

while后面的东西成立,则执行,否则 end

image-20220526194936957

例:

image-20220526195041782

5.4 switch case case … otherwise end

image-20220526195350393

6.绘图

6.1 二维平面绘图

figure 在使用plot绘图的时候,默认都是在figure上面,figure可以新建一个空白图像

plot(x,y)  作图函数

title('y=sin(x)')  图标题

xlabel('x')  给x加一个坐标

ylabel('sin(x)')  给y加一个坐标

xlim([0 2*pi])  给图片能显示的x坐标限制一个最大值

plotyy  共用一个x坐标系,在y上面有不同的取值

自定义颜色:

image-20220526200009220

自定义线型

image-20220526200158994

自定义数据标记点

image-20220526200205906

代码案例:

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')

set(get(AX(1),'Ylabel'),'String','Slow Decay')

set(get(AX(2),'Ylabel'),'String','Fast Decay')

xlabel('Time(\mesec)')

title('Multiple Decay Rates')

set(H1,'LineStyle','--')

set(H2,'LineStyle',':')

执行到plotyy,理解下共用一个坐标系的意思

image-20220526200539622

增加横纵坐标名称,并为图片增加图片名

image-20220526200948996

改变线型

image-20220526201033841

6.2 三维立体绘图

二维绘图用plot,三维绘图用plot3()

加网格 gird on

各个方向变成正方体 axis square

加标签 xlabel(‘’) ylabel(‘’) zlabel(‘’)

保持原图,后边还要在这个基础上继续画图 hold on

例:

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on 
axis square

image-20220526201619493

6.3图形的保存和导出

两个办法导出图片(不要直接截图)

(1) 编辑 ->复制图片->word中粘贴 (导出设置中可以设置大小)

(2) 文件->保存

6.4 图形窗口的分割

subplot(2, 2, 1) 2行2列四个方块第一个图

subplot(2, 1, 2) 2行1列两个块第二个图

subplot(4,4,3) 4行4列第三个

subplot(4,4,8) 4行4列第八个

x = linspace(0, 2*pi, 60);

subplot(2, 2, 1)     

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])

image-20220526203316516

问题:matlab代码行加不加分号的区别?

在代码行的后加分号运行结果不会显示在命令行窗口;不加分号,变量的值会随着运行显示在命令行窗口。

如果不想命令行窗口显示太多东西,可以在代码编写的过程中加上分号,需要知道变量的值的时候在工作区进行查看即可。
nspace(0, 2*pi, 60);

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

Matlab零基础入门 的相关文章

  • 为什么 MATLAB 本机函数 cov(协方差矩阵计算)使用与我预期不同的除数?

    给定一个 M 维和 N 个样本的数据矩阵数据 例如 data randn N M 我可以计算协方差矩阵 data mu data ones N 1 mean data cov matrix data mu data mu N 如果我使用原生
  • 为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

    我正在将大量数字打印为 png 文件 每个图都是数据矩阵中的一列图 我获取 png 文件并将它们串在一起形成动画 我的问题是 前几百张图像打印得很快 但创建每个新图形的时间却迅速增加 从前几百个 png 文件的约 0 2 秒到第 800 个
  • 非模态 questdlg.m 提示

    我的代码绘制了一个图 然后提示用户是否想使用不同的参数绘制另一个图 问题是 当 questdlg m 打开时 用户无法查看绘图的详细信息 这是代码 while strcmp Cont Yes 1 Some code modifying da
  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 在Matlab中选择图像上的像素时,索引指的是什么?

    当在Matlab中查看图像的单个像素时 该索引指的是什么 X Y 指的是像素的坐标 RGB 指的是颜色 但是关于索引是什么有什么想法吗 为了澄清一下 当我在 Matlab 中查看图形并使用数据光标选择一个点时 显示的三行是 X Y 指数 R
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • for 循环中的绘图没有可见点

    我正在努力解决我想使用 for 循环制作的情节 我知道当我在循环之后添加它时它会起作用 只是一个简单的图 但我想用另一种方式尝试一下 fib ones 1 10 for k 3 10 hold on fib k fib k 1 fib k
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000
  • 如何在 MATLAB 中将矩阵元素除以列总和?

    有没有一种简单的方法可以将每个矩阵元素除以列和 例如 input 1 4 4 10 output 1 5 4 14 4 5 10 14 以下是执行此操作的不同方法的列表 使用bsxfun https www mathworks com he
  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • 考虑预分配速度[重复]

    这个问题在这里已经有答案了 我正在做以下事情 for i 1 m index 0 for j 1 n index index values i j 2 j 1 if j 1 symbol chip chip values index 1 e
  • 绘制布朗运动 matlab

    首先 我只想说我不太习惯使用matlab 但我需要一个作业 我应该创建一个 布朗运动 我的代码目前如下所示 clf hold on prompt Ge ett input size input prompt numParticles inp
  • 氡变换线检测

    我正在尝试检测灰度图像中的线条 为此 我在 MATLAB 中使用 Radon 变换 我的 m 文件的示例如下所示 我可以使用此代码检测多行 我还使用线条的移位和旋转属性来绘制线条 但是 我不明白在获取rho和theta值后如何获取检测线的起

随机推荐

  • 不断完善

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 最简单的网页下载代码 import urllib2 使用urllib2模块 from sys import argv script urlo argv def down
  • 【核磁共振成像】部分傅里叶重建

    目录 一 部分傅里叶重建 二 部分傅里叶重建算法 2 1 填零 2 2 零差处理 一 部分傅里叶重建 在部分傅里叶采集中 数据并不是绕K空间中心对称收集的 而是K空间的一半是完全填充的 另一半只收集了一小部分数据 部分傅里叶采集所依据的原理
  • 公钥私钥证书与https

    公钥私钥 非对称加密 在一个过程中使用两个密钥 公共密钥用于加密信息 私用密钥用于解译加密的信息 这种加密方法称为非对称加密 也称为公钥加密 因为其中一个密钥是公开的 另一个私钥则需要自己保密 私钥签名 如果我用私钥加密一段数据 当然只有我
  • Request 获取请求数据(方法)

    1 Request 继承体系 2 Request 获取请求数据 2 1 请求行 String getMethod 获取请求方式 GET String getContextPath 获取虚拟目录 项目访问路径 request demo Str
  • java占用cpu最高的线程堆栈信息

    jstack找出占用cpu最高的线程堆栈信息 package com example demo public class Math public static final int initData 666 public int comput
  • Swagger3的使用

    本篇涉及到的swagger注解 速记 EnableSwagger2 开启swagger EnableOpenApi 开启swagger的Api功能 EnableWebMvc 是为了解决swagger和springmvc整合之后总是出现空指针
  • 解决idea打不开的两种可能性

    一 如果 IDEA 下载完成后打不开 可能是因为 dea64 exe vmoptions 文件中保留了之前版本的破译配置 注释或者删除就可以了 1 打开 C Users Administrator AppData Roaming JetBr
  • python stm32-STM32 上面跑Python

    By Derrick Wang 之前我一直在找一种方案 可以把stm32打造成一个真正的创客平台 因为传统的开发环境安装编译 眼花缭乱的工具栏和按钮并不实用于非电子类专业的爱好者设计出自己的作品 这样的高门槛把很多有兴趣者拒之门外 一个没有
  • UDP协议介绍

    UDP 是一个简单地面向数据报的运输层协议 进程的每个输出操作都正好产生一个 UDP 数据报 并组装成一份待发送的 IP 数据报 UDP 不提供可靠性 它把应用程序传给 IP 层的数据发送出去 但是并不保证他们能到达目的地 UDP数据报封装
  • [蓝桥杯] 分数 (Python 实现)

    题目 代码 b 0 a 1 for i in range 0 20 b a a 2 print d d b a 2 结果 1048575 524288
  • C++案例

    目录 一 while循环猜数组 二 水仙花数 三 for循环敲桌子游戏 四 9 9乘法表 五 一维数组 元素逆置 六 冒泡排序 七 封装一个函数 利用冒泡排序 实现对整型数组的升序排序 八 结构体嵌套结构体 九 结构体排序 一 while循
  • 哈夫曼编码最大编码长度

    概念 层数 叶子节点为待编码的数据 根为第0层 编码长度 第 L L L层数据编码后的长度为 L L L 节点概率 若节点为叶子节点 则概率为叶子所编码数据的频率
  • Linux INPUT 子系统实验

    按键 鼠标 键盘 触摸屏等都属于输入 input 设备 Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件 输入设备本质上还是字符设备 只是在此基础上套上了 input 框架 用户只需要负责上报输入事件 比如按键值
  • Python3之异常with语句

    高级语法之异常with 语法 with 表达式1 as 变量1 表达式2 as 变量2 语句块 with的作用 使用于对资源进行访问的场合 确保使用过程中不管是否发生异常都会执行必须的 清理 操作 并释放资源 如 文件打开后自动关闭 线程中
  • 如何判断是否适合学编程?

    能问出这个问题的人 肯定是心里有点想学习编程 但是又担心自己不适合学习编程 学不会反而浪费时间 那么 如何判断自己是否适合学习编程呢 可以从如下几个方面入手 1 明确自己为什么要学编程 因为不同的编程语言适用的领域不一样 比如我认识一个做互
  • 使用COLMAP进行三维重构

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 COLMAP是什么 二 数据准备 2 1 数据采集 2 2 数据组织 三 重构 3 1 提取图像特征 3 2 特征点匹配 3 3 稀疏重建 SfM 3 4
  • QT开发遇到的问题(1)——程序循环执行的问题

    我之前一直直接用C 开发工程 有需求需要跨平台开发 前期使用时候感觉还可以 转到工程应用时候 就遇到好多坑 今天就遇到个大坑 在开发时候需要不断循环一块代码来实现某种功能 QT不像C 那种 这个更加专业 下面我对这个问题进行详细说明分析 问
  • ResultSet详解

    结果集 ResultSet 是数据中查询结果返回的一种对象 可以说结果集是一个存储查询结果的对象 但是结果集并不仅仅具有存储的功能 他同时还具有操纵数据的功能 可能完成对数据的更新等 结果集读取数据的方法主要是getXXX 他的参数可以是整
  • docker 入门指南

    docker Docker is an open platform for developing shipping and running applications Docker enables you to separate your a
  • Matlab零基础入门

    前言 本篇是随笔 一段时间没用Matlab 简单复习了下 都是入门知识 零基础可读 文章目录 1 初步认识界面和命名 2 数据类型和矩阵 3 元胞数组和结构体 3 1 元胞数组 3 2 eye 3 3 3 magic 3 4 结构体 4 矩