matlab初

news2024/9/28 12:13:32

        matlab语言方式与c有很大的相似之处,此篇记录一下自己初步学习matlab的一些过程和代码

        学习matlab主要是从b站上,也从matlab官网去学习了一下相关感兴趣的函数

        版本是之前下好的R2022b

1.变量命名,这与c语言变量命名要求的规则非常相似

        简单来讲,沿袭右为左赋值的习惯

        A = 2

        a = 2

        这与平时接触的c/c++语言相比,没什么不同,均不允许数字为首开头的变量格式;但是总还是有区别,比如不会让符号在前的命名,matlab需要以字母开头命名;比如:

 

 

 2.字符与字符串

        matlab中单引号' '与双引号 " " 还是有一定的差别的,在c中单引号是单个的char类型,在matlab中:

        a = ' hello ',可以是一个字符串;

        同样的,也可以是 b = " hello ",一样也是字符串

        如下的运算结果,可以看出其中的区别

>> a = 'hello'

a =

    'hello'

>> b = "hello"

b = 

    "hello"

>> a+b

ans = 

    "hellohello"

>> b+a

ans = 

    "hellohello"
>> a = 'abcde'

a =

    'abcde'

>> a-c

ans =

    -2    -1     0     1     2

>> c='abc'

c =

    'abc'

>> a-c
对于此运算,数组的大小不兼容。

相关文档
 
>> a+c
对于此运算,数组的大小不兼容。

         在我的理解看来,单引号形式的字符串是在一个数组中存储,可以进行ASCII码运算,与双引号的字符串相加时,统一成为了  " res1 +  res2 " 类型的字符串拼接

>> c

c =

    'abc'

>> a = 'a'

a =

    'a'

>> c-a

ans =

     0     1     2

>> a-c

ans =

     0    -1    -2

>> a*c

ans =

  列 1 至 2

        9409        9506

  列 3

        9603

>> c*a

ans =

  列 1 至 2

        9409        9506

  列 3

        9603

>> c/a

ans =

    1.0000    1.0103    1.0206

 对于 " " 的字符串类型来讲,只能支持+操作,也就是拼接操作

>> a = "aaaa"

a = 

    "aaaa"

>> b="bbb"

b = 

    "bbb"

>> a-b
'string' 类型的操作数不支持运算符 '-'。
 
>> a+b

ans = 

    "aaaabbb"

 常见函数abs(),一开始以为是绝对值了,结果发现是返回ASCII码

>> abs('0')

ans =

    48

 常用函数char(),返回对应ASCII码的字符
 

>> char(48)

ans =

    '0'
>> char(48,49,52)

ans =

  3×1 char 数组

    '0'
    '1'
    '4'

 常用函数num2str(),“number to string”,将数字转化为字符串类型

>> num2str(88)

ans =

    '88'

 常用函数length(),返回字符串的的长度 (空格也会算)

>> str = 'wwwoo1100'

str =

    'wwwoo1100'

>> length(str)

ans =

     9

3.矩阵

        在matlab中应用矩阵非常神奇。

        声明矩阵: 元素之间用    空格   或者   逗号 , 隔开,一行元素结束后用   分号 ; 隔开

>> A = [1,2,3;6,7,8;9,10,20]

A =

     1     2     3
     6     7     8
     9    10    20
>> A = [1 2 3;6 7 8;9 10 20]

A =

     1     2     3
     6     7     8
     9    10    20

        矩阵运算   (转置、元素按行列出、矩阵求逆、矩阵乘法)

>> A'

ans =

     1     6     9
     2     7    10
     3     8    20



>> A(:)

ans =

     1
     6
     9
     2
     7
    10
     3
     8
    20


>> inv(A)

ans =

   -1.3333    0.2222    0.1111
    1.0667    0.1556   -0.2222
    0.0667   -0.1778    0.1111


>> inv(A) * A

ans =

    1.0000    0.0000    0.0000
         0    1.0000         0
         0         0    1.0000


>> A/inv(A)

ans =

   40.0000   46.0000   79.0000
  120.0000  141.0000  234.0000
  249.0000  288.0000  507.0000

>> A*A

ans =

    40    46    79
   120   141   234
   249   288   507

        矩阵与随机数

  函数zeros()(与图像处理有关的矩阵生成),zeros(行数,列数,层数),如图像RGB三层,生成三层矩阵

>> E= zeros(10,5,3)  

E(:,:,1) =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0


E(:,:,2) =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0


E(:,:,3) =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

(上述中,E(:,:,2)里面的 : 指的是全部(all)的意思)

 矩阵函数eye(num):生成单位阵

>> eye(4)

ans =

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

 矩阵函数magic(num):生成一个magic矩阵,上下斜相加均相等

>> magic(5)

ans =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

>> magic(3)

ans =

     8     1     6
     3     5     7
     4     9     2

  3.+ 矩阵构造  +矩阵运算  +矩阵索引: 

        起始 :步长 :终止(包括)

>> 1:4:29

ans =

     1     5     9    13    17    21    25    29

        repmat函数(①,②,③),进行重复操作来构造,相当于ctrl c ①,然后按照②的行数ctrl v

        再按照③的列数 ctrl v 形成新的矩阵

>> c = repmat(1:4:20,3,2)

c =

     1     5     9    13    17     1     5     9    13    17
     1     5     9    13    17     1     5     9    13    17
     1     5     9    13    17     1     5     9    13    17

         randi(最大值,行数,列数)

>> b = randi(50,4,4)

b =

    31    14    33    33
    30    16    24    28
    28     6    32    37
    44    47    28    27

>> a = randi(50,4,4)

a =

    50     4    39    49
    11    21    32    10
     6    23    39     7
     6    19    47    35
//矩阵运算
>> a+b

ans =

    81    18    72    82
    41    37    56    38
    34    29    71    44
    50    66    75    62

>> a-b

ans =

    19   -10     6    16
   -19     5     8   -18
   -22    17     7   -30
   -38   -28    19     8

>> a*b

ans =

        4918        3301        4366        4528
        2307        1152        2171        2405
        2276        1015        2194        2474
        3612        2315        3138        3414

>> a.*b   (各对应元素相乘)

ans =

        1550          56        1287        1617
         330         336         768         280
         168         138        1248         259
         264         893        1316         945

>> a/b

ans =

    1.4104    5.3935   -2.6806   -1.8289
    3.9783   -4.9448   -0.2488    0.9769
    5.5984   -7.4187   -0.1907    1.3716
   -0.2886  -11.1121    7.1615    3.3588

>> a./b   (各对应元素相除)

ans =

    1.6129    0.2857    1.1818    1.4848
    0.3667    1.3125    1.3333    0.3571
    0.2143    3.8333    1.2188    0.1892
    0.1364    0.4043    1.6786    1.2963

         矩阵索引

>> c = a(2,3)

c =

    32

>> c = a(2,:)

c =

    11    21    32    10

>> c = a(:,4)

c =

    49
    10
     7
    35

>> c = a(:,:)

c =

    50     4    39    49
    11    21    32    10
     6    23    39     7
     6    19    47    35

                find函数(找到满足条件的索引值)

>> [m,n] = find(a > 20)

m =

     1
     2
     3
     1
     2
     3
     4
     1
     4


n =

     1
     2
     2
     3
     3
     3
     3
     4
     4



>> [m,n] = find(a == 20)    //(不存在=20的元素)

m =

  空的 0×1 double 列向量


n =

  空的 0×1 double 列向量

 

4.元胞数组

        我的理解来看,元胞数组像是vector容器一样,是一个大的包裹,这个包裹按照矩阵的方式来进行存储,cell(行数,列数)进行声明,原本以为像是二维数组那样来解释,但是最终还是觉得不合适,在元胞数组中,可以声明很多的空间来存放东西,如下列:

>> A = cell(2,4)

A =

  2×4 cell 数组

  列 1 至 3

    {0×0 double}    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {0×0 double}

  列 4

    {0×0 double}
    {0×0 double}

>> A{1,2} = rand(3,4)

A =

  2×4 cell 数组

  列 1 至 3

    {0×0 double}    {3×4 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {0×0 double}

  列 4

    {0×0 double}
    {0×0 double}

>> A{1,2}

ans =

    0.8147    0.9134    0.2785    0.9649
    0.9058    0.6324    0.5469    0.1576
    0.1270    0.0975    0.9575    0.9706

5.程序结构(类似c/c++)

         for循环的结构也是与c类似的,for 变量 : 步长 : 终止

sum = 0;
for n = 1:1:5
    sum=sum+1;
end
sum

         (在脚本中,不带  “ ;” 的将被显示)

        类似的,while和switch

 6.作图

 

        终于到了matlab画图的部分

二维:

x = 0:0.01:100;   //x值   start:step:end
y = 20*exp(-0.05*x).*sin(x);  //y=f(x)
figure            //创建图窗窗口
plot(x,y)         //绘图
title('y = 20*exp(-0.05*x).*sin(x)')  //标题
xlabel('x')                           //x标签
ylabel('20*exp(-0.05*x).*sin(x)')     //y标签

 

x = 0:0.01:100;
y1 = 200*exp(-0.05*(x+40)).*sin(x+40);
y2 = 8*exp(8*sin(x)).*sin(20*sin(x*0.08));
figure
[AX,H1,H2] = plotyy(x,y1,x,y2);
title('two')
set(H1,'LineStyle','-')
set(H2,'LineStyle','--')

 

 三维:(这里要注意,二维与三维plot函数写法不同)

t = 0:pi/50:10*pi
plot3(sin(t),cos(t),t)  //三维作图
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on  // 网格

[x,y,z] = peaks(60);
mesh(x,y,z)
grid 

//peaks函数

[X,Y] = meshgrid(-10:0.5:10);
Z = Y.*10*sin(cos(sin(X))) - X.*cos(Y).*exp(-0.05*Y);
s = surf(X,Y,Z,'FaceAlpha',0.5)

 

 

学习参考:1.matlab前言_哔哩哔哩_bilibili

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

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

相关文章

Pycharm与Anaconda Python的开发环境搭建

目录 一:下载 二:安装python 三:设置Pycharm 一:下载 下载Anaconda: Anaconda | The World’s Most Popular Data Science Platform 安装好以后,设置一下环境变量: 打开命令行&#xff0c…

双链表的插入,删除以及遍历

在上一节我们讲解了单链表的头插法和尾插法 http://t.csdn.cn/RixAu 但是单链表无法反向检索,对于某些情景可能造成不便,所以我们今天学习双链表 目录 1.双链表的初始化 2.双链表的插入 3.双链表的删除 4.遍历双链表 1.双链表的初始化 typedef i…

【Git】(一)基本操作

读完本文后,您会了解: 1、如何在本地配置GIT环境? 2、环境配置成功后,如何从远端下载一个已有仓库到本地? 1. 配置全局用户名、邮箱 git config --global user.name "username" git config --global user.email &q…

plt绘画带箭头的xy坐标轴

import matplotlib.pyplot as plt import mpl_toolkits.axisartist as axisartist# 创建画布 fig plt.figure() # 使用axisartist.Subplot方法创建一个绘图区对象ax ax axisartist.Subplot(fig,2,3,1) # 将绘图区对象添加到画布中 fig.add_axes(ax) # 通过set_axisline_style…

varifocal loss(VFL)介绍

文章目录 一、论文链接二、公式理解代码 一、论文链接 https://arxiv.org/pdf/2008.13367.pdf 二、公式理解 简单说明下,这里的IACS是IoU-aware classification score的缩写。VFL原文里面这个target socre也就是q,是一个和IOU有关的软标签。对于挑选出…

华为网络篇 RIP的报文认证-28

难度2复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 RIP的认证方式有两种,一种是明文认证,另一个是密文认证。明文认证有一个比较大的缺陷,就是认证的密钥也是明文传输的,这为攻击者…

关于 LLM 和图数据库、知识图谱的那些事

本文整理自 NebulaGraph 布道师 wey 在「夜谈 LLM」主题分享上的演讲,主要包括以下内容: 背景 LLMRAGGraph 知识抽取Text2CypherGraph RAG未来规划 技术背景 LLM 是什么 这里简单、快速地介绍下大语言模型:从 GPT-2 开始,到后…

如何在安卓设备上安装并使用 ONLYOFFICE 文档

您可以使用文档安卓版应用,在移动设备上访问存在您 ONLYOFFICE 帐号中的文件。阅读本文,了解如何操作。 什么是 ONLYOFFICE 文档安卓版 适用于 Android 系统的 ONLYOFFICE 文档是一款全面的办公工具,您可以使用它,查看、创建、编…

42.SpringBoot—原理篇

一、SpringBoot原理篇。 (1)自动配置。 (1.1)bean加载方式。 (1.1.1)xml方式。(适用自定义bean与第三方bean) (1.1.2)注解方式组件扫描。(适用于自定义bean&#xff…

[PyTorch][chapter 50][自定义网络 ResNet18]

前言: 这里结合一个ResNet-18 网络,讲解一下自己定义一个深度学习网络的完整流程。 经过20轮的训练,测试集上面的精度85% 一 残差块定义 针对图像处理有两种结构,下面代码左右实现的是左边的结构. # -*- coding: utf-8 -*- &q…

基于YOLOv8模型和Caltech数据集的行人检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要 基于YOLOv8模型和Caltech数据集的行人检测系统可用于日常生活中检测与定位行人,利用深度学习算法可实现图片、视频、摄像头等方式的行人目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数据集…

2022年06月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;小白鼠再排队 N只小白鼠(1 < N < 100)&#xff0c;每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量&#xff0c;要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用 “red”&#xff0c;“blue”等字符串来表示。不同的小白…

实现简单纯Canvas文本输入框,新手适用

文章目录 概要效果技术细节代码 概要 Canvas上面提供输入&#xff1a; 一、最简单可能是用dom渲染一个input,覆盖在图形上面进行文本编辑&#xff0c;编辑完再把内容更新到图形.这样简单&#xff0c;但是缺点也明显&#xff0c;就是它不是真正绘制在canvas上面&#xff0c;没…

爬虫逆向实战(三)--天某云登录

一、数据接口分析 主页地址&#xff1a;天某云 1、抓包 通过抓包可以发现登录接口是account/login 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过“载荷”模块可以发现password、comParam_signature、comParam_seqCode是加密的 请求头是否加密&#xff1f; 无…

嵌入式学习之字符串

通过今天的学习&#xff0c;我主要提高了对sizeof 和 strlen、puts()、gets()、strcmp 、strncmp、strstr、strtok的理解。重点对sizeof的使用有了更加深刻的理解

【会议征稿信息】第二届信息学,网络与计算技术国际学术会议(ICINC2023)

2023年第二届信息学&#xff0c;网络与计算技术国际学术会议(ICINC2023) 2023 2nd International Conference on Informatics,Networking and Computing (ICINC 2023) 2023年第二届信息学&#xff0c;网络与计算技术国际学术会议(ICINC2023)将于2023年10月27-29日于中国武汉召…

MongoDB:数据库初步应用

一.连接MongoDB 1.MongoDBCompass连接数据库 连接路径:mongodb://用户名:密码localhost:27017/ 2.创建数据库(集合) MongoDB中数据库被称为集合. MongoDBCompass连接后,点击红色框加号创建集合,点击蓝色框加号创建文档(数据表) 文档中的数据结构(相当于表中的列)设计不用管…

mqtt学习记录

目录 1 匿名登录2 ⽤户名密码登录&#xff0c;配置接收的主题mosquitto 配置文件修改添加⽤户信息添加topic和⽤户的关系登录演示 1 匿名登录 ⾸先打开三个终端&#xff0c; 启动代理服务&#xff1a;mosquitto -v -v 详细模式 打印调试信息 默认占⽤&#xff1a;1883端⼝订阅…

机器学习笔记:线性链条件随机场(CRF)

0 引入&#xff1a;以词性标注为例 比如我们要对如下句子进行标注&#xff1a; “小明一把把把把住了”那么我么可能有很多种词性标注的方法&#xff0c;中间四个“把”&#xff0c;可以是“名词名词动词名词”&#xff0c;可以是“名词动词动词名词”等多种形式。 那么&#…

安装chromedriver 115,对应chrome版本115(经检验,116也可以使用)

目录 1. 查看Chrome浏览器的版本2. 找到对应的chromedriver3. 安装ChromeDriver 1. 查看Chrome浏览器的版本 点进这个网站查看&#xff1a;chrome://settings/help &#xff08;真是的&#xff0c;上一秒还是115版本&#xff0c;更新后就是116版本了&#xff0c;好在chromedi…