数学建模之Matlab快速入门--全

news2024/9/20 16:45:17

前言

  • 本文是之前学Matlab时候做的笔记,很适合快速入门
  • 数学建模中matlab和python是最常用的两个软件,现在本人更喜欢python去做数学建模

文章目录

  • 界面介绍与操作
    • 快捷操作
  • 数据类型
    • 数值型
      • 整型
      • 浮点型
      • 复型
      • 逻辑型
      • 字符型
      • struct数组
      • cell数组
      • 函数句柄
      • 日期和时间型
    • 数据标准
    • 变量储存
  • 基本运算
  • 矩阵基础
    • 向量
    • 矩阵
      • 矩阵运算
      • 矩阵大小和向量大小
      • 冒号运算符号(遍历矩阵)
      • 稀疏矩阵
  • 逻辑基础
    • 优先级
  • 结构基础
    • if-else-end
    • switch-case-otherwise
    • for
    • while
    • break、continue、return
  • 函数
    • nargin
    • ~
    • 函数查询
  • 特殊形式
    • 函数句柄
    • evel

界面介绍与操作

在这里插入图片描述

  • 工具栏:快捷操作
  • 编码器:脚本代码窗口
  • 工作区:脚本变量窗口
  • 工作路径:当前文件索引

快捷操作

在这里插入图片描述

最常用的:

  • clear
  • clc
  • dbstop if error

数据类型

数值型

整型

  • (u)int8、(u)int16、(u)int32、(u)int64 (u):是无符号类型

    a = int8(8)
    
    a = uint8(8)
    

浮点型

默认情况下,MATLAB其所有算术计算符合IEEE标准的双浮点精度执行

  • single :单精度
  • double :双精度
%matlab还可以让字符转为ASCII值
s = 'wang yang'

b = double(s(1))    %S(1) 代表着 ‘w'

复型

  • z = a + bi
z = 5 + 3i

real(z)		% 实部
imag(z)		%虚部
abs(z)		%模
angle(z)	%arctan b/a

逻辑型

  • logical :matlab中 0 为假,1为真
  • 逻辑运算符的结果

字符型

a = [1:5];         %a为一个数值数组
b = num2str(a);    %该函数将a转化为字符串类型   
x1 = a*2;          %此处为a中的数值一次乘2

struct数组

注意:matlab中索引是从1开始的

%%
structTemp = struct('name',{'汪洋','王国森','施轶秋'},'age',{18,18,18})  //一一对应
structTemp.name(1)
structTemp.name(2)
structTemp.name(2)
structTemp.age(1)
structTemp.age(2)
structTemp.age(3)

structTmep

structTemp
%%
%%
my.name = "汪洋"
my.age = 18
my
%%

%删除  但是要在扩展库中下载
structTemp = struct('name',{'汪洋','王国森','施轶秋'},'age',{18,18,18})
field = {'name'}
structTemp = rmfield(structTemp,field)

structTemp

cell数组

*元胞数组*是一种包含名为*元胞*的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。通过将索引括在圆括号 ()中可以引用元胞集。使用花括号{} 进行索引来访问元胞的内容。

  • 要用{}赋值
  • 使用"()"访问
%1、要维度一样
%2、要用{}
a = {1,2,3,4;'w','w','x','w'}; 
b = cell(3)
c = cell(5,2)

%使用"()"访问
%以下4种赋值方式是一样的
A(1,1)={2}
A(1,2)={[2]}
A{2,1}=2  
A{2,2}=[2]

函数句柄

日期和时间型

https://www.cnblogs.com/yymn/p/9170252.html

数据标准

  • realmax 数据最大值
  • realmin 数据最小值
  • 结果异常值:
    • nan
    • inf

变量储存

利用MAT文件可以把当前MATLAB工作空间中的变量保留下来
MAT文件是一种二进制格式文件,文件后缀.mat
变量写入文件与导入matlab通过save和load命令:
save 文件名 [变量名列表]
load 文件名 [变量名列表]

当然可以通过主窗口的界面操作进行保存与导入
注:
1.文件名不需要加引号,不需要带文件后缀.mat,可以带路径
2.变量名列表中变量的个数不限,省略则默认写入/导入所有的变量,多个变量名之间用空格隔开

save mydata a x  %%把a x存入mydata文件中,下次就可以使用
load mydata    %%将mydata文件中的内容

基本运算

%%
%基本运算
(1+sqrt(4))/2 %开平方根
8^(1/3) %开任意方根,注意优先级^大
power(8,1/3) %开任意方根,注意复数模式 等价于^  如下:
power(-8,0.3)^(1/0.3) %理论仍是-8,但结果已经变成复数  

log(1.5)  %以e为底的对数  
log10(1.5)  %以10为底的对数
log2(1.5)  %以2为底的对数
log1p(x)  %=log(x+1)   注意一下 : 比log精度更高,特别是x趋于0的时候  1
log(9)/log(3) %利用换底公式求任意

exp(2)  %以e为底的指数
expm1(2)  % = exp(x)-1  e^x 的泰勒级数展开
pow2(10)  %以2为底的指数
nextpow2(20) %寻找最大的n,使得2^(n-1)小于该值  注意一下

sin(pi/6) %正弦
cos(pi/6) %余弦
sinpi(1/6) %=sin(1/6*pi)
cospi(1/6) %=cos(1/6*pi)
tan(pi/4) %正切

asin(1/2) %反正弦,弧度制
acos(1/2) %反余弦,弧度制
atan(1) %反正切,弧度制
asind(1/2) %反正弦,角度制
acosd(1/2) %反余弦,角度制
atand(1) %反正切,角度制
atan2(1,-1) %四象限反正切

mod(17,4) %求余数
rem(17,4) %求与被除数符号相同余数

sign(-1) %符号函数

fix(1.1072)  %向正去穷取整数
floor(1.1072)  %向负无穷取整数
ceil(1.1072)	%比他大的最近一个整数
round(1.1072)	%四舍五入
roundn(1.1072,-2)	%按小数位置四舍五入
%%
%整体运算
max([1,2,3,4,5]) %最大值
min([1,2,3,4,5]) %最小值
mean([1,2,3,4,5]) %平均值
median([1,2,3,4,5]) %中位数
prod([1,2,3,4,5]) %求积
sum([1,2,3,4,5]) %最和
var([1,2,3,4,5]) %方差
std([1,2,3,4,5]) %标准差
cov([1,2,3,4,5],[5,4,3,2,1]) %协方差

%%
%生成随机数
rand() %生成0-1均匀分布的的随机数
randi(100) %生成0到100均匀分布随机数,注意辨别参数的意义
randn(1)%生成正态分布的的随机数
sprand(10,10,0.5)%稀疏均匀分布随机矩阵   最后一个参数表示的是密度  注意一下:稀疏矩阵0是不显示的
sprandn(10,10,0.5) %稀疏正态分布随机矩阵
rng('default') %随机种子

矩阵基础

矩阵是matlab的核心

向量、矩阵

  • 向量可以理解为一维数组,也可以看作是矩阵的特殊形式
  • 矩阵可以理解为二维数组

向量

命名规范:

起始数据 : 数据间隔(可省略,默认为1) : 结束数据

%%
1 : 100(等价于1:1:100)		  %范围为1到100,间隔为1,1×100的向量
1 : 2 : 100					%范围为1到100,间隔为2, 1×50的向量
100 : -1 : 1				%范围为100到1,间隔为-1, 1×100的向量
1 : 1 : 100.7				%范围为1到100(≤100.7的最大数),1×100的向量
%%

矩阵

  • 采用逗号或空格来分割行元素
  • 采取分号或者换行来分隔列元素
  • 注意维数
zeros(m,n) / (m)			%创建m*n的零矩阵
ones(m,n)					%创建m*n的一矩阵(全是一) 
eye(m,n)					%创建m*n的(伪)单位矩阵
magic(m)					%创建m的换方阵,行列相等
rand(m,n)/randn(m,n)		%创建m*n的随机矩阵,rand是0-1的范围,randn是m-n的范围
meshgrid(L,N)				%创建基矩阵
repmat(A,m,n)				%将A扩大m*n倍
reshape( Matrix_in , m , n) %扩充矩阵,注意不能改矩阵的元素

%%
meshgrid(坐标)
m=1:5;
n=2:7;
[A,B]=meshgrid(m,n)

A =

     1     2     3     4     5
     1     2     3     4     5
     1     2     3     4     5
     1     2     3     4     5
     1     2     3     4     5
     1     2     3     4     5
B =

     2     2     2     2     2
     3     3     3     3     3
     4     4     4     4     4
     5     5     5     5     5
     6     6     6     6     6
     7     7     7     7     7

%%

矩阵运算

  • 矩阵相乘 A*B
  • 矩阵右除 A/B等价于A与B的逆乘
  • 矩阵左除 A\B等价于A的逆乘与B
  • 矩阵数乘 A.*B 矩阵中元素两两相乘
  • 矩阵右除 A./B
  • 矩阵左除 A.\B
  • 对于数+/-矩阵,相当于每个元素都加或者减一

其他运算:(运行规则和矩阵运算相同)

  • inv(A) 矩阵求逆
  • pinv(A) 矩阵求伪逆 逆不唯一,对于非方阵来说,A * B * A ≈ A满足这个就行
  • A’ 矩阵转置
  • det(A) 矩阵行列式
  • trace(A) 行列式的迹
  • eig(A) 特征向量和特征值 [X,Y] = eig(A)
  • lu(A) [L, U, P] = lu(A); L是一个下三角矩阵,U是一个上三角矩阵,P是一个置换矩阵,使得PA = LU
  • qr(A) [Q, R] = qr(A); Q是一个正交矩阵,R是一个上三角矩阵,使得A = QR

矩阵大小和向量大小

在这里插入图片描述

冒号运算符号(遍历矩阵)

  • 注意下标是从1开始的

在这里插入图片描述

  • 注意的是:matlab中永远是行为先

稀疏矩阵

采用三元组的方式存储,不储存0

  • sparse(m,n)
  • 可以强制转换矩阵为稀疏矩阵

逻辑基础

logical,真为1,0为假

符号功能
==判断是否相等
~=判断是否不等
<判断是否小于
<=判断是否小于等于
>判断是否大于
>=判断是否大于等于
符号功能
isnan( )判断是否非数
isinf( )判断是否无穷大
isempty( )判断是否为空
isreal( )判断是否为实数(甄别复数)

在这里插入图片描述

标量和矢量:

  • 标量:固定的,如:x= 5
  • 矢量:矢量(Vector)在MATLAB中则用于表示一系列相关的数值,它被定义为一维数组或序列,可以是行向量或列向量。

优先级

优先级符号
1(最高)括号( )
2转置 ’ ;次幂 ^
3一元运算符 + - ~
4乘除 * / \
5加减 + -
6冒号表达式 :
7二元比较逻辑 > >= < <= ~=
8逻辑与 &
9逻辑或 |
10标量逻辑与 &&
11(最低)标量逻辑或 ||
  • 只要记住:()优先级是最高的就可以了

结构基础

if-else-end

在这里插入图片描述

注意点

  • endif不能写成else if
  • 记得要写end
a=1;b=2;c=1;
delta=b^2-4*a*c;
if delta>0
    x(1)=(-b+sqrt(delta))/2/a;
    x(2)=(-b-sqrt(delta))/2/a;
elseif delta==0
    x=(-b+sqrt(delta))/2/a;
else
    x=[];
end

switch-case-otherwise

在这里插入图片描述

注意点:

  • otherwise不需要提供判断条件,当其他分支均不满足条件时候被执行
  • break别忘了
  • switch不能指定范围
a=1;b=2;c=1;
delta=b^2-4*a*c;
switch sign(delta)
    case 1
    x(1)=(-b+sqrt(delta))/2/a;
    x(2)=(-b-sqrt(delta))/2/a;
    case 0
    x=(-b+sqrt(delta))/2/a;
    otherwise
    x=[];
end

for

在这里插入图片描述

注意点

  • index在values中按顺序进行取值,value一般是行向量,一般采用冒泡表达式
  • 当value值为矩阵时候,按照列进行切割,每次value取矩阵的一列
  • 别忘了end
s=10;
H = zeros(s);
for i = 1:s
    for j = 1:s
        H(ii,jj) = 1/(ii+jj-1);
    end
end

parfor

  • 只要记得他是用来加速for循环的

在这里插入图片描述

while

在这里插入图片描述

  • 注意别忘了end
%% while
n = 10;
f = n;
while n > 1
    n = n-1;
    f = f*n;
end

%注意:n的更新条件

break、continue、return

  • break 跳出循环体
  • continue 跳出本次循环
  • return 跳出函数体,matlab一般很少使用
%% break
limit = 0.8; s = 0;
while 1
    tmp = rand;
    if tmp > limit
        break
    end
    s = s + tmp;
end

%% continue
limit = 0.8; s = 0;
while 1
    tmp = rand;
    if tmp > limit
        continue
    end
    s = s + tmp;
end

函数

在这里插入图片描述

  • 函数需要存m文件(在保存的时候选择函数),默认函数名就是文件名字
  • 不要睡意改变文件名字,否则调用容易出问题
  • 如果matlab里面有这个函数,就不要去实现
%如:自定义文件
function [aa,bb] = m_max(a,b)
%UNTITLED 此处提供此函数的摘要
%   此处提供详细说明
if a > b
    aa = a
    bb = b
else
    aa = b
    bb = a
end

nargin

在这里插入图片描述

function c = addme(a,b)
%     switch nargin
%         case 2
%             c = a + b;
%         case 1
%             c = a + a;
%         otherwise
%             c = 0;
%     end
    if nargin<2
        b=1;
    end
    c=a+b;
end

~

function [c1,c2] = opem(a,b)
	if nargin < 2
		b  = 1;
	end
		c1 = a + b;
		c2 = a - b;
end

%%
如果不想c1,可以这样写 [~,c2]
%%

函数查询

https://blog.csdn.net/ywsydwsbn/article/details/123857932?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169478642516800226595731%2522%252C%2522scm%2522%253A%252220140713.130102334

  • 不会的函数,直接bing、百度等

特殊形式

函数句柄

%创建函数句柄
fun1 = @open
[a,b] = fun(1,1)

%fun2 = @(x,y)(x+y)
%输出  ans = 2

evel

在这里插入图片描述

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

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

相关文章

区块链国赛第六套样题(关于运维)

任务1-2&#xff1a;区块链系统部署与运维 围绕食品安全溯源区块链平台部署与运维需求&#xff0c;进行项目相关系统、节点以及管理工具的部署工作。通过监控工具完成对网络、节点服务的监控。最终利用业务需求规范&#xff0c;完成系统日志、网络参数、节点服务等系统结构的维…

Jetson安装Archiconda3全过程

1. 下载Archiconda3 下载网址&#xff1a; 发布 Archiconda/build-tools --- Releases Archiconda/build-tools (github.com)​​​​​​ 2. 执行命令 bash ./Archiconda3-0.2.2-Linux-aarch64.sh 3. conda换源 conda config --add channels https://mirrors.tuna.tsing…

计算机网络-PIM-SM组播实验

一、概述 目前为止我们学习了组播转发网络中的PIM协议&#xff0c;PIM模型有两种&#xff1a; PIM-DM主要使用在网络规模较小&#xff0c;用户集中的组播网络中。 PIM-SM主要使用在网络规模较大&#xff0c;用户较为分散的组播网络中。PIM-SM基于组播模型又可以分为PIM-SM&…

5.Lab four —— Trap

首先切换traps分支 git checkout traps make clean RISC-V assembly 代码&#xff1a; #include "kernel/param.h" #include "kernel/types.h" #include "kernel/stat.h" #include "user/user.h"int g(int x) {return x3; }int f(…

AI预测体彩排3采取888=3策略+和值012路或胆码测试8月24日升级新模型预测第61弹

经过近60多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;已到达90%的命中率&#xff0c;这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了&#xff0c;大…

Linux——驱动——自动设备

自动创建设备节点是Linux设备驱动开发中的一个重要环节&#xff0c;它允许设备驱动程序在内核中注册后&#xff0c;自动在/dev目录下创建对应的设备文件&#xff0c;从而使得用户空间程序可以通过标准的文件操作接口&#xff08;如open、read、write等&#xff09;与硬件设备进…

Level3 — PART 4 机器学习算法 — 朴素贝叶斯

目录 贝叶斯定理 朴素贝叶斯模型&#xff08;Naive Bayes Model&#xff09; 估计 离散估计 极大似然估计 案例 朴素贝叶斯扩展 高斯贝叶斯分类器 原理 应用 源码分析 伯努利贝叶斯分类器 原理 源码分析 多项朴素贝叶斯分类器 半朴素贝叶斯分类器 模拟题 CDA…

Linux系统之jobs命令的基本使用

Linux系统之jobs命令的基本使用 一、jobs命令介绍二、jobs命令的使用帮助2.1 jobs命令的help帮助信息2.2 jobs命令的语法解释 三、jobs命令的基本使用3.1 运行一个后台任务3.2 列出后台所有的作业3.3 列出进程ID3.4 只列出进程ID3.5 终止后台任务3.6 只显示运行任务3.7 只显示停…

tcp 网络通信及抓包工具的使用

tcp网络通信 本地回环&#xff08;Loopback&#xff09;的概念 本地回环地址是一个特殊的IP地址&#xff0c;用于指向计算机本身的网络接口。在IPv4中&#xff0c;最常见的本地回环地址是127.0.0.1&#xff0c;而在IPv6中则是::1。这个地址用于测试网络软件&#xff0c;确保网…

【IoT】路由器/linux系统,如何使用shell查看系统硬件配置,传感器CPU温度,资源占用率等信息(以红米AX6000为例)

【IoT】路由器/linux系统&#xff0c;如何使用shell查看硬件配置&#xff0c;传感器CPU温度&#xff0c;系统资源占用率等信息&#xff08;以红米AX6000为例&#xff09; 文章目录 1、路由器拆机与测评&#xff08;Redmi AX6000&#xff09;2、通过telnet获得SSH3、linux系统信…

SpringBoot集成kafka接收消息

SpringBoot集成kafka接收消息 1、SpringBoot集成kafka接收消息2、Payload注解接收消息体内容3、Header注解接收消息头内容4、接收消息所有内容 1、SpringBoot集成kafka接收消息 生产者 package com.power.producer;import org.springframework.kafka.core.KafkaTemplate; imp…

【自动化】考试答题自动化完成答案,如何实现100%正确呢

一、科目仿真考试不能自动答题 我的答案是可以的&#xff0c;电脑程序可以模拟人的操作完成所有的答题并提交结束考试 二、分析页面内容 完成一个题目&#xff0c;包括判断题&#xff0c;对与错2选1答案&#xff0c;单选题ABCD4选1答案&#xff0c;多选题大家想一想 F12查看按…

基于机器学习的糖尿病数据分析与风险评估系统

B站视频及代码下载&#xff1a;基于机器学习的糖尿病数据分析与风险评估系统_哔哩哔哩_bilibili 1. 项目简介 糖尿病&#xff0c;作为一种在全球范围内广泛流行的慢性疾病&#xff0c;已经影响了数以百万计的人们的生活&#xff0c;给全球公共健康带来了严重的挑战。因此&#…

uni-app的示例项目--简单的登陆页面及列表页面

uni-app的示例项目--简单的登陆页面及列表页面 文章说明核心代码效果展示源码下载 文章说明 随着移动端使用占比升高&#xff0c;手机端的App、小程序也成了一些场景下的首选&#xff1b;采用uni-pp开发此类应用具有很多优势&#xff0c;它可以直接使用vue3进行开发&#xff0c…

集合论与位运算之间的转换

集合可以用二进制表示&#xff0c;二进制从低到高第 i 位为 1 表示 i 在集合中&#xff0c;为 0 表示 i 不在集合中。例如集合 {0,2,3} 可以用二进制数 1101(2)​ 表示&#xff1b;反过来&#xff0c;二进制数 1101(2)​ 就对应着集合 {0,2,3}。 例如集合 {0,2,3} 可以压缩成 …

干货|软件测试简历的编写以及注意事项

一、个人信息 1.年龄超过30岁的&#xff0c;就不体现年龄&#xff1b; 2.学历是本科的&#xff0c;以及专业是计算机的可以加上学历、专业2个标签&#xff0c;大专的则可以不体现&#xff1b; 3.英语过了四六级的可以加1个英语的标签&#xff1b; 4.如果你的户籍和面试城市…

Python入门级 序列全集 [ 继上篇 进阶版 持续更新中哞哞哞!!! ]例题较多

本文主要结合例题介绍了序列【常用函数、可迭代对象】&#xff0c;字典【函数、写法、定义、视图对象】&#xff0c;集合【常用函数】&#xff0c;运算符优先级。这几种数据集合在Python中也是蛮重要的&#xff0c;对于新手比较友好。 本文例题大多来自哔站up主鱼C-小甲鱼【Pyt…

系统编程 网络 http协议

http协议------应用层的协议 万维网&#xff1a;http解决万维网之间互联互通 计算机web端网络只能看到文字 1.如何在万维网中表示一个资源&#xff1f; url <协议>&#xff1a;//<主机>&#xff1a;<端口>/<路径> ------------------------------…

Adobe After Effects的插件--------CC Ball Action

CC Ball Action是粒子效果器,其将2D图层变为一个个由3D小球构成的图层。它是AE内置的3D插件。 使用条件 使用该插件的图层需是2D图层。 我们以一张图片素材为例: 给图片图层添加CC Ball Action效果控件,然后新建一个摄像机(利用摄像机旋转、平移、推拉工具,方便在各个角…

【LeetCode面试150】——36有效的数独

博客昵称&#xff1a;沈小农学编程 作者简介&#xff1a;一名在读硕士&#xff0c;定期更新相关算法面试题&#xff0c;欢迎关注小弟&#xff01; PS&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟沈小农&#xff0c;希望我的文章能帮助到你。欢迎大家在…