数模学习02-Matlab基础知识入门

news2024/11/17 8:29:18

先把matlab下载好。然后你就会发现电脑有少了几十个GB。服啦~

修改字体

字体真的是太小了,其实我无论是使用什么编辑器我一般都会先改字体,字体在开始中有一个预设,可以修改字体,这样眼睛看着也会舒服一点


命令行窗口的使用

这里可以直接在命令行窗口输入某些命令。

例如  10*9 = 90 

他会自动的返回一个answer给你


工作区显示变量

在使用命令行窗口操作一些数据之后可以在工作区找到对应的值


Matlab基本知识

1.基本的操作

(1)分号

在每一行的语句后面加上分号(一定要是英文的" ; "):表示不显示运行结果

但是即使没有显示,在工作区还是可以体现。

一般中间计算的结果都是需要添加分号的。

分号同时也可以作为区分行的标志


(2)注释

标准格式为  在你要注释的代码前添加 %即可

快捷键 Ctrl+R

取消注释 Ctrl+T


(3)清除工作区clear

clear可以清楚工作区的所有变量

我现在的工作区

在输入clear之后,工作区就全部清空了


(4)清除命令行窗口内容

clc可以清除命令行窗口中的所有文本,让屏幕变得干净

所以经常一起使用  clear;clc  

这两条一起使用,起到“初始化”的作用,防止之前的结果对新脚其他程序文件产生干扰。


2.常用的操作函数

(1)输出和输入函数(disp 和 input)

disp:是屏幕输出函数,类似于c语言中的printf()函数

在matlab中,字符串可以使用单引号或者双引号都可以

例如:

disp('单引号')
disp("双引号")

运行结果

接下来还可以输出向量

比如

%行向量:同一行中间可以用逗号分隔,也可以用空格

a = [1,2,3]    
a = [1 2 3]

disp(a) 

% 列向量使用 “;”来隔开

b = [3;4;5]

disp(b) 

这在里disp,后面加不加分号都会有运行结果,不然这个函数加了;没用了那她还有什么用。


(2)字符串的合并

matlab中两个字符串的合并有两种方法

        [1]方法一:使用strcat(str1,str2……,strn) 

         strcat('字符串1','字符串2') 

示例代码如下: 

        [2]方法二:[str 1,str 2,……, str n]或[str1  str2  ……  strn]看成一个行向量

                ['祖国的','大好河山',"我想去看看"]

 

注意,第一种方法确实可以   '  和  " (单引号和双引号)混用,但是第二种就不可以了

        


(3)数字转换为字符串

num2str: 将数字转换为字符串

c = 100
num2str(c)

% 那么以后就可以拼接数字类型了
disp(['c的取值为' num2str(c)])
disp(strcat('c的取值为', num2str(c)))

结果示例 

如果这里直接将c放在字符串后面的话。会自动将c的数字类型通过ANSIC码转换为对应的字符串然后再拼接,最后输出结果。


(4)input函数

input:将输入的数、向量、矩阵、字符串等赋给一个变量

这里和Python很相似,在input中的字符串是一个提示

A = input('请输入A:');
B = input('请输入B:')

不加分号的话,不会输出,但是会在工作区展示


(5)sum函数

       【1】如果是向量(无论是行向量还是列向量),都是直接求和

E = [1,2,3]
sum(E)
E = [1;2;3]
sum(E)

        【2】如果是矩阵,则需要根据行和列的方向作区分

        sum后面的第二个参数可以指定对应的数字,如果不写

        默认是 1 :按列求和(得到行向量),如果指定为2就是按行求和(得到列向量)。

E = [1,2;3,4;5,6]  % 三行二列的矩阵
% a=sum(x);

% 按列求和(得到一个行向量)
a = sum(E)   


a = sum(E,1)


% a=sum(x,2); %按行求和(得到一个列向量)
a = sum(E,2)


% a=sum(x(:));%对整个矩阵求和
a = sum(sum(E))

% E(:) 一列一列的将全部列拼接为一列

E(:) 
a = sum(E(:))

 


(6)提取矩阵中的指定元素

先定义一个矩阵

A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A

【1】取指定元素:第一个参数是行号,第二个参数是列号,都是从1 开始 

A(2,1)
A(3,2)

【2】取指定某一行全部元素:取指定的某一行的全部元素(输出的是一个行向量)

A
A(2,:)
A(5,:)

【3】取指定某一列全部元素:: 取指定的某一列的全部元素(输出的是一个列向量)

A
A(:,1)
A(:,3)

【4】取指定的某些行的全部元素:输出的是一个矩阵

A
A([2,5],:)      % 只取第二行和第五行(一共2行)
A(2:5,:)        % 取第二行到第五行(一共4行)
A(2:2:5,:)     % 取第二行和第四行 (从2开始,每次递增2个单位,到5结束)
1:3:10          %      1     4     7    10
10:-1:1        % 10     9     8     7     6     5     4     3     2     1
A(2:end,:)      % 取第二行到最后一行
A(2:end-1,:)    % 取第二行到倒数第二行

运行结果:


A =

    1.0000    1.0000    4.0000    0.3333    3.0000
    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000


ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000


ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000


ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    3.0000    3.0000    3.0000    1.0000    3.0000


ans =

     1     4     7    10


ans =

    10     9     8     7     6     5     4     3     2     1


ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000
    0.3333    0.3333    2.0000    0.3333    1.0000


ans =

    1.0000    1.0000    4.0000    0.3333    3.0000
    0.2500    0.2500    1.0000    0.3333    0.5000
    3.0000    3.0000    3.0000    1.0000    3.0000

>> 

【5】取全部元素:按列拼接的,最终输出的是一个列向量

A
A(:)


(7)size函数

size(A):函数是用来求矩阵A的大小的,它返回一个行向量第一个元素是矩阵的行数第二个元素是矩阵的列数

A = [1,2,3;4,5,6]
B = [1,2,3,4,5,6]
size(A)
size(B)


[r,c] = size(A)


% 将矩阵A的行数返回到第一个变量r,将矩阵的列数返回到第二个变量c
r = size(A,1)  %返回行数
c = size(A,2) %返回列数


(8)repmat函数

B = repmat(A,m,n): 将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。

m*n也可以理解为,将A铺为m行,n列

A = [1,2,3;4,5,6]
B = repmat(A,2,1)


B = repmat(A,3,2)


3.Matlab中矩阵的运算

(1)矩阵乘法 *

先了解一下矩阵的乘法的操作过程

MATLAB在矩阵的运算中, “ * ” 号和 “ / ” 号代表矩阵之间的乘法与除法

A = [1,2;3,4]
B = [1,0;1,1]
A * B

-----------------------------------------

 两个形状相同的矩阵对应元素(不是真正的乘除法是每个元素之间的操作,每个位置上的元素独立操作)之间的乘除法需要使用 “ .* ” “ ./ ” 

A = [1,2;3,4]
B = [1,0;1,1]
A .* B
A ./ B

运行结果如下:


A =

     1     2
     3     4


B =

     1     0
     1     1


ans =

     1     0
     3     4


ans =

     1   Inf
     3     4

 

-----------------------------------------

每个元素同时和常数相乘或相除操作上面的两种操作方法都可以

所以这里的点乘和乘,点除和除都是一个相同效果

A = [1,2;3,4]
A * 2
A .* 2
A / 2 
A ./ 2

-----------------------------------------

每个元素同时乘方时只能用 .^  如果使用的是  那就是两个矩阵相乘

A = [1,2;3,4]
A .^ 2
A ^ 2  == A * A
A * A

运行结果如下


A =

     1     2
     3     4


B =

     1     0
     1     1


ans =

     1     0
     3     4


ans =

     1   Inf
     3     4

>> A = [1,2;3,4]
A * 2
A .* 2
A / 2 
A ./ 2

A =

     1     2
     3     4


ans =

     2     4
     6     8


ans =

     2     4
     6     8


ans =

    0.5000    1.0000
    1.5000    2.0000


ans =

    0.5000    1.0000
    1.5000    2.0000

>> A = [1,2;3,4]
A .^ 2
A ^ 2 
A * A

A =

     1     2
     3     4


ans =

     1     4
     9    16


ans =

     7    10
    15    22


ans =

     7    10
    15    22

>> 


(2)求矩阵的逆矩阵 inv(矩阵)

A/B = A*inv(B)

求B的逆矩阵

B = [1,0;1,1]

// 利用原矩阵乘以它的逆矩阵得到单位矩阵即可验算

B * inv(B)
A * inv(B)
A / B


(3)Matlab中求特征值和特征向量

// 在Matlab中,计算矩阵A的特征值和特征向量的函数是eig(A),其中最常用的两个用法:
A = [1 2 3 ;2 2 1;2 0 3]
// E=eig(A):求矩阵A的全部特征值,构成向量E。
E=eig(A)
// [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量)
[V,D]=eig(A)

运行结果如下:


A =

     1     2     3
     2     2     1
     2     0     3


E =

   -1.3166
    5.3166
    2.0000

每一列都是一个特征向量
V =

    0.8364   -0.6336   -0.2408
   -0.3875   -0.5470   -0.8427
   -0.3875   -0.5470    0.4815


D =

   -1.3166         0         0
         0    5.3166         0
         0         0    2.0000

V和D的特征值和特征向量是对应的

也就是说,D是第几列,它的特征向量就在V的第几列


(4)find函数的基本用法

Matlab在存储矩阵时,是一列一列存储的

// find函数,它可以用来返回向量或者矩阵不为0的元素位置索引

返回的是  *索引*
X = [1 0 4 -3 0 0 0 8 6]
ind = find(X)


// 其有多种用法,比如返回 前2个不为0的元素 的位置:
ind = find(X,2)

// 上面针对的是向量(一维),若X是一个矩阵(二维,有行和列),索引该如何返回呢?
X = [1 -3 0;0 0 8;4 0 6]


ind = find(X)


// 这是因为在Matlab在存储矩阵时,是一列一列存储的也就是将它优化成了一列 

我们可以做一下验证:
X(4)


// 假如你需要按照行列的信息输出该怎么办呢?

// 这里的r和c就是代表每次找到的这个元素在第几行或者第几列
[r,c] = find(X)
[r,c] = find(X,1) %只找第一个非0元素


4.矩阵与常数的大小判断运算

共有三种运算符:大于 > ;小于 < ;等于 ==  (一个等号表示赋值;两个等号表示判断和编程是一样的)

X = [1 -3 0;0 0 8;4 0 6]
X > 0
X == 4

运算结果如下:

logical 数组(逻辑数组)

0代表否 , 1代表是

这里输出的数组为0就代表false,是1就代表true即当前元素经过判断后成立

>> X = [1 -3 0;0 0 8;4 0 6]

X =

     1    -3     0
     0     0     8
     4     0     6

>> X > 0

ans =

  3×3 logical 数组(逻辑数组)

   1   0   0
   0   0   1
   1   0   1

>> X == 4

ans =

  3×3 logical 数组

   0   0   0
   0   0   0
   1   0   0


5.判断语句

Matlab的判断语句,if所在的行不需要冒号,语句的最后一定要以end结尾 ;

中间的语句要注意缩进

a = input('请输入考试分数:')
if a >= 85  
    disp('成绩优秀')
elseif a >= 60 
    disp('成绩合格')
else
    disp('成绩挂科')
end

运行实例:


结语

结束下一篇文章会更新层次分析法的代码的写法。

ヾ( ̄▽ ̄)Bye~Bye~

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

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

相关文章

亚马逊美国站ASTM F2613儿童折叠椅和凳子强制性安全标准

ASTM F2613折叠椅和凳子安全标准 美国消费品安全委员会&#xff08;CPSC&#xff09;发布的ASTM F2613儿童折叠椅和凳子的强制性安全标准&#xff0c;已于2020年7月6日生效&#xff0c;并被纳入联邦法规《16 CFR 1232儿童折叠椅和凳子安全标准》。 亚马逊要求在美国站上架的儿…

GaussDB元命令使用指导

所谓元命令就是在gsql里输入的任何以不带引号的反斜杠开头的命令。本课程通过实际使用gsql实践&#xff0c;介绍GaussDB数据库gsql所提供的元命令。 本课程仅展示基础的元命令使用。 一、操作步骤 步骤1 使用gsql连接到GaussDB实例。 gsql工具使用-d参数指定目标数据库名…

何时为 SEO 创建本地化文件夹和页面

您可以为新网站创建主题支柱页面吗&#xff1f; 您网站的使用年限与您如何构建内容和文件夹无关紧要。在重建已有 10 年历史的域或启动新 URL 时&#xff0c;可以做到这一点。 您应该始终构建您的网站&#xff0c;以便它帮助最终用户了解网站的层次结构&#xff0c;并显示该部…

详解Vue3中的插槽(slot)

本文主要介绍Vue3中的插槽&#xff08;slot&#xff09;。 目录 一、在普通写法中使用插槽&#xff08;slot&#xff09;作用域插槽默认插槽 二、在setup写法中使用插槽&#xff1a;注意事项 在Vue3中&#xff0c;插槽&#xff08;slot&#xff09;是一种用于在父组件中向子组件…

【2】Docker Compose编排

Docker Compose 使用 Docker 帮助我们解决服务的打包安装的问题&#xff0c;随着而来的问题就是服务过多的带来如下问题&#xff1a; 多次使用 Dockerfile、Build、Image 命令或者 DockerHub 拉取 Image&#xff1b;需要创建多个 Container&#xff0c;多次编写启动命令&…

Python——yolov8识别车牌2.0

目录 一、前言 二、关于项目UI 2.1、修改界面内容的文本 2.2、修改界面的图标和图片 三、项目修改地方 四、其他配置问题 一、前言 因为后续有许多兄弟说摄像头卡顿&#xff0c;我在之前那个MATS上面改一下就可以了&#xff0c;MAST项目&#xff1a;基于YOLOv8的多端车流检…

51 单片机基础

一、51 单片机 开发环境配置&#xff0c;vscodeSDCC 编辑器、编译器 最常用的集成开发环境 keil c51 1、vscode SDCC 开发环境搭建 vscode 插件&#xff08; 或者 PlatformIO IDE&#xff09; EIDE 的使用&#xff1a;详细自学 PlatformIO IDE&#xff1a;详细自学 vsc…

C#高级 02异步编程

基础知识 1.什么是异步任务 包含了异步任务的各种状态的一个引用类型 1)正在运行、完成、结果、报错等 2)另有ValueTask值类型版本对于异步任务的抽象 1)开启异步任务后&#xff0c;当前线程并不会阻塞&#xff0c;而是可以去做其他事情 2)异步任务&#xff08;默认&#xff…

HTTP是怎么泄露账户密码的?

近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。 那么HTTPS和HTTP的区别在…

2023年总结:反复纠结与成长的一年

前言 这是我第五年写年度总结&#xff1a; 《2022年总结&#xff1a;道阻且长&#xff0c;行则将至》 《2021年总结&#xff1a;前路有光&#xff0c;初心莫忘》 《2020年总结&#xff0c;所有努力只为一份期待》 《2019年总结&#xff0c;平凡的我仍在平凡的生活》 现在…

LeetCode206反转链表(java实现)

今天带来的题目解析是leetcode206&#xff0c;反转链表&#xff0c;我们来看下题目描述 如何实现链表的反转呢&#xff1f;我在这里提供的思路是双指针的思路。 具体的思路如下&#xff1a; 假设我们的原链表如下 首先定义一个指针pre&#xff0c;用于指向head之前的位置&am…

RHCE9学习指南 第7章 服务管理

刚装好Windows系统时&#xff0c;需要进行一些优化&#xff0c;如下图所示。 右键单击所得菜单&#xff0c;可以看到一些按钮包括重启、停止、启动该服务。这些管理的是这个服务的当前状态。 双击服务名&#xff0c;在启动类型中设置的是系统启动时&#xff0c;这个服务要不要…

【elk-day01】es和kibana搭建及验证---Mac-Docker

Mac系统使用Docker下载搭建和验证eskibana Docker下载安装es安装es验证kibana安装kibana验证 Docker下载安装 Docker Desktop官网安装下载地址 说明一下为什么要安装desktop版本的docker&#xff0c;因为docker作为工具使用&#xff0c;我们需要的是开箱即用&#xff0c;没有必…

基于Python的城市热门美食数据可视化分析系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本项目利用网络爬虫技术从XX点评APP采集北京市的餐饮商铺数据&#xff0c;利用数据挖掘技术对北京美食的分布、受欢迎程度、评价、评论、位置等情况进行了深入分析&#xff0c;方便了解城市美食店…

sheng的学习笔记-【中】【吴恩达课后测验】Course 4 -卷积神经网络 - 第四周测验

课程4_第4周_测验题 目录 第一题 1.面部验证只需要将新图片与1个人的面部进行比较&#xff0c;而面部识别则需要将新图片与K个人的面部进行比较。 A. 【  】正确 B. 【  】错误 答案&#xff1a; A.【 √ 】正确 第二题 2.在人脸验证中函数d(img1,img2)起什么作用&a…

每周一算法:邻值查找

给定一个长度为 n n n的序列 A A A&#xff0c; A A A中的数各不相同。 对于 A A A 中的每一个数 A i A_i Ai​&#xff0c;求&#xff1a; m i n 1 ≤ j < i ∣ A i − A j ∣ min_{1≤j<i}|A_i−A_j| min1≤j<i​∣Ai​−Aj​∣&#xff0c;以及令上式取到最小值的…

2023版本QT学习记录 -8- HTTP获取图片并且显示(大数据)

———————HTTP获取图片——————— &#x1f384;效果演示 &#x1f384;HTTP请求图片思维导图 &#x1f384;添加组件 &#x1f384;添加头文件 #include "mainwindow.h" #include "ui_mainwindow.h" #include "qnetworkaccessmanager.h&qu…

【Unity入门】PlayerPrefs的简介与使用

目录 PlayerPrefs储存位置用例注意事项 PlayerPrefs PlayerPrefs 是Unity内置的一个静态类&#xff0c;可以用于存储一些简单的数据类型&#xff1a;int ,string ,float。 分别对应的函数为&#xff1a; SetInt()&#xff1a;保存整型数据GetInt()&#xff1a;读取整形数据Se…

css 超过一行/多行显示省略号... - 附示例

效果 1、超过一行 2、超过多行 - 以两行为例 二、示例代码 1、超过一行 margin: 20px; width: 50px; border: 1px solid red; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 2、超过多行 - 以两行为例 margin: 20px; width: 50px; border: 1px solid r…

Unity is running with Administrator privileges, which is not supported

Unity is running with Administrator privileges, which is not supported 如果还是弹出CMD窗口提示输入密码&#xff0c;但无法怎样都无法输入&#xff0c;请关闭窗口&#xff0c;然后右键快捷方式管理员运行一次。 ----------分割线---------- 为什么这样做&#xff1f; 很…