【MatLab手记】 --从0到了解超超超详过程!!!
文章目录
- MatLab笔记
- 一、命令行窗口
- 二、变量命名规则
- 三、数据类型
- 1. 数字
- 2. 字符与字符串
- 3. 矩阵
- 3.1 矩阵创建
- 3.2 矩阵的修改和删除
- 3.3 矩阵的拼接与重构重排
- 3.4 矩阵的运算方法
- 3.5 矩阵的下标
- 4. 元胞数组(类似数据容器)
- 5. 结构体
- 四、逻辑与流程控制
- 五、函数
- 1. 基础函数
- 2. 匿名函数
- 3. 常用函数
- 4. 特殊函数
- 六、绘图
- 1. 二维图
- 2. 三维图
- 3. 图形窗口分割
- 总结
- 总结
MatLab笔记
一、命令行窗口
- 直接交互,类似终端命令
- 命令符:
- clc–清除所有命令
- clear all–清空工作区所有变量
- %% --注释(有分割线)
- % --注释(无割线)
- ctrl + r --多行注释
- ctrl + t --取消注释
- iskeyword --关键字
二、变量命名规则
- 区分大小写
- 以字母开头,由字母、数字、下划线组成,不能使用标点
- 不超过63位
三、数据类型
数字、字符与字符串、矩阵、元胞数结构体
1. 数字
整数和浮点数
运算符(+,-,*,/,^)
2. 字符与字符串
单引号和双引号定义表示:
%% 字符与字符串
id = 'a'
id2 = 'cd'
id + id2 % 字符串的计算是ASCII码值的运算num = 155
char(num) % 将输入数值转换为对应的字符
num2str(id) % 将数字(包括整数、浮点数等)转换为字符串表示。str = 'I Love You'
length(str) % 空格也占一个字符
3. 矩阵
3.1 矩阵创建
直接创建:
A = [1 2 3;2 5 8;9 8 2] % 分号表示换行
函数创建:
% 函数创建
E = zeros(10,5,3) % 创建一个10行5列,3维度的全0矩阵
F = ones(13,5,3) % 创建一个10行5列,3维度的全1矩阵
G = eye(3,3) % 创建一个3*3的单位矩阵
E(:,:,1) = rand(10,5) % 生成的随机数在 (0, 1) 区间内均匀分布
E(:,:,2) = randi(5,10,5) % 生成一个10行5列的、在 [1, 5] 范围内的伪随机整数矩阵
E(:,:,3) = randn(10,5) % 生成标准正态分布的伪随机数(均值为 0,方差为 1)
3.2 矩阵的修改和删除
- 修改:
A = [1 2 3 4;2:5;3:6]% 位置索引
A(2,3) = 10 % 将第2行第3列替换
A(2:) = 10 % 将第2行整行替换
A([1,3],[1,2]) = 0 % 将第1,3行的第1,2列替换% 线性索引
A(4) = 8 % 按列从1开始第4个数替换
A(5,6) = 888 % 不够的列数以0扩展
- 删除:
% 删除行列
A(:,[1]) = [] % 删除所有行的第1列
A(:,[1,end]) = [] % 删除所有行的第1和最后一列
A(:,[2:end]) = [] % 删除所有行的第2到最后一列% 删除单个 -- 通过线性索引
A(4) = [] % 删除之后由于矩阵形式发生变化,按列铺排成一行显示
3.3 矩阵的拼接与重构重排
- 拼接:
% 横向拼接(行数相同):
A = [1 2 3 4;2:5;3:6]
B = ones(3,4)
C = [A,B] % ,横向
% 或
D = cat(2,A,B) % 2表示横向拼接% 竖向拼接(列数相同):
B2 = ones(2,4)
E = [A;B2] % ;竖向
% 或
E1 = cat(1,A,B2) % 1表示横向拼接
- 重构重排:
% 重构:
A = randi(10,2,6)
B = reshape(A,3,4) % 重构元素数量不变,按线性索引重构
B1 = reshape(A,3,[]) % 要求3行,列数自动匹配% 重排sort(A,dim,descend):
A = randi(10,2,6)
B = sort(A,1,"ascend"); % 1表示对每列排序,ascend表示升序
B1 = sort(A,2,"descend") % 2表示对每行排序,descend表示降序
C = sortrows(A,4,"descend") % 以第4列降序排序为基准,整行排序
3.4 矩阵的运算方法
- 函数运算:
% 函数运算:
% sum(A,dim)
A = randi(10,2,6)
sum(A,1) % 按列求和
sum(A,2) % 按行求和
sum(A,"all") % 全部求和% prod()求乘积
% mean()求平均值
% median()计算中位数
% mode()计算众数
% min()求最小值
% max()求最大值
- 算数运算:
五种兼容模式:
注意:算术符号加点意味对应位置单独进行计算
% 矩阵的四则运算
A = [1 2 3 4;5 6 7 8]
B = [1 1 2 2;2 2 1 1]
C = A + B % (对应矩阵位置相加)
D = A - B % (对应矩阵位置相减)
E = A * B' % 两矩阵相乘,前矩阵列数与后一个矩阵行数相同
F = A .* B % 两矩阵对应项相乘
G = A / B % 相当于A * B的逆
H = A ./ B % 两矩阵对应项相除%
A = [1 2 3;2 5 8;9 8 2]
B = A' % 对矩阵进行转置(列转为行)
C = A(:) % 将矩阵以列方向进行拉直
D = inv(A) % 对方阵矩阵求逆
- 关系运算:
==、>、<、>=、<=、~=对应位置比对,返回布尔值:
% 关系运算
A = [1:4]
B = ones(3,4)
A == B
===========================
1 0 0 0
1 0 0 0
1 0 0 0
-
逻辑运算:
&与,|或,~非,xor异或,&&双与,||双或
对应位置进行逻辑运算。
3.5 矩阵的下标
% 矩阵的下标(起始值为1)
A = magic(5)
B = A(2,3) % 取第2行第3列数据
C = A(3,:) % 取第3行所有列
D = A(:,4) % 取第4列所有行
[m,n] = find(A > 20) % 返回符合条件的索引值
[m,n] = find(A == 21)
4. 元胞数组(类似数据容器)
A = cell(1,6) % cell(行,列)
A{2} = eye(3) % 生成一个3*3的,对角线位1的单位矩阵 切记索引位置从1开始
A{5} = magic(5) % 幻方矩阵(矩阵的每行、每列以及主副对角线上的数之和相等)
B = A{5}
5. 结构体
% 类似于字典
books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])
books.name % 取出结构体中,属性对应的值(cell类型)
books.name(1) % 切片,从1开始(cell类型)
books.name{1} % 用{}取出的值位字符串形式books.price
books.price(1)
四、逻辑与流程控制
%% 逻辑和流程控制
% 1. for .. end
sum = 0;
for n = 1:5sum = sum + n^2
endsumm = 0
for i = 1:5p=1for j = 1:ip = p*jendsumm = summ + p
end% 2. while .. end
s = 0
n = 1
while n<=10s = s+nn = n+1
end% 3. 分支结构 if .. end;if ..elseif .. else .. end;switch .. case .. end
a = 100
b = 50
c = 110
if a > b'成立'
end
===============
if a > b & a > c'成立'
else'错误'
end
==================
switch a == 100case a > 80"hhh"case a > 60'ppp'otherwise'ttt'
end% break结束循环
% continue 跳过本次循环
五、函数
1. 基础函数
基本结构:
function[返回的形参:output1,output2……] = 函数名(输入的形参:input1,input2……)
…………
end
%% 函数
function [max,min] = max_min_val(x)
max = subfuc1(x)
min = subfuc2(x)function r = subfuc1(x) % 子函数x1 = sort(x,'descend');r = x1(1);endfunction r = subfuc2(x)x1 = sort(x,'a');r = x1(1);end
end
调用:
创建一个新的-m文件,然后先从另一个文件调用它:
A = 1:20
[max,min] = max_min_val(A);
max
min
==============
max =20
min =1
2. 匿名函数
不需要单独创建-m文件,基本结构:
f = @(参数1,参数2) 函数表达式
ff = @(x,y)x^2 + y^2;
vv = @(x,y)x.^2 + y.^2;
调用:
f(2,3)
x = 1:5;
y = 0.1:0.1:0.5;
vv(x,y)
==============
ans =13ans =1.0100 4.0400 9.0900 16.1600 25.2500
3. 常用函数
%% 1. 数值函数
x = -1.5;
y = -3 + 4i;
abs(x) % 取绝对值
abs(y) % 还可以求模mod(11,3) % 取余sqrt(8) % 开根号
sqrt(1:9) % 对向量中每个数开根
format long % 长精度exp(2) % 计算以自然常数e为底的指数
exp(0)log(2) % 以e为底的对数运算
log(exp(3))log2(8) % 以2为底的对数运算
log10(100) % 以10为底的对数运算round(2.5) % 四舍五入
round(3.1415926,2) % 指定小数点后几位四舍五入保存,n>0往右数
round(3141.59,-2) % n<0往左数%% 三角函数
%% 常用函数
A = [1:9];
x = 8;
find(A == x)
isempty(find(A == x)) % 确定数组是否为空x = 0:4;
y = 0:3;
[xx,yy] = meshgrid(x,y); % 返回网格坐标
xx
yyseed = 3;
rng(seed) % 设置随机数种子
randi(10,3,3)
4. 特殊函数
六、绘图
1. 二维图
%% 二维平面绘图
% 1. 绘制简单二维线图
x = 0:0.01:2*pi
y = sin(x)
figure % 创建一个幕布
plot(x,y) % 画图
title('y = sin(x)') % 命名标题
xlabel('x') % x轴标名
ylabel('sin(x)') % y轴标名
xlim([0 2*pi]) % 设置x范围
text(2.5,sin(2.5),'sin(x)') % 在线上加标注文字% 2. 设置颜色、线型、数据标记点
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') % 将两个y值同一个x轴绘制在一个图上
set(get(AX(1),'Ylabel'),'String','Slow Decay') % y轴命名
set(get(AX(2),'Ylabel'),'String','Fast Decay')
xlabel('Time (\musec)') % x轴命名
title('Multiple Decay Rates')
set(H1,'LineStyle','--') % 设置线条形状
set(H2,'LineStyle',':')
legend('y1','y2') % 添加图例% 3. 条形图
x = [2021,2022,2023];
y = [10,20;20,30;100,200]
bar(x,y)% 4. 直方图
x = randn(1000);
nbins = 25 % 等间距条个数
H = histogram(x,nbins)
counts = H.Values % 每个bin的个数% 5. 饼图
x =[1:2:9]
pie(x) % 1/sum(x)占比% 6. 散点图
t = 0:pi/50:2*pi;
x = 16*sin(t).^3
y = 13*cos(t) - 5*cos(2*t) - 2*cos(3*t) - cos(4*t);
scatter(x,y,"red","filled")% 7. 矢量类图形
a = [4,5];
quiver(0,0,a(1),a(2))% 8. hold on 保持原有图形
2. 三维图
%% 三维立体绘图
t = 0:pi/50:10*pi
plot3(sin(t),cos(t),t) % (x,y,z),绘制三维图像
xlabel('sin(t)') % 坐标轴命名
ylabel('cos(t)')
zlabel('t')
grid on % 背景添加网格线
axis square % 限制坐标轴规整%% 绘制三维曲面
x = -1:0.2:2;
[x,y] = meshgrid(x)
z = x.*exp(-x.^2-y.^2);
mesh(x,y,z)
surf(x,y,z)%% 双峰函数
[x,y,z] = peaks(30)
mesh(x,y,z)
grid
3. 图形窗口分割
%% 图形窗口分割
x = linspace(0,2*pi,60)subplot(2,2,1) % 将幕布划分为2*2大小,选择第1个区域
plot(x,sin(x)-1)
title('sin(x)-1');axis([0,2*pi,-2,0]) % axis设置了当前图像的坐标轴范围
% x轴的范围从0到2π,y轴的范围从-2到0。subplot(2,1,2)
plot(x,cos(x)+1)
title('cos(x)+1');axis([0,2*pi,0,2])
总结
- 矩阵的创建以及基本运算
- 函数的定义方法
- 逻辑控制的结构
- 绘图的方法
quare % 限制坐标轴规整
%% 绘制三维曲面
x = -1:0.2:2;
[x,y] = meshgrid(x)
z = x.*exp(-x.2-y.2);
mesh(x,y,z)
surf(x,y,z)
%% 双峰函数
[x,y,z] = peaks(30)
mesh(x,y,z)
grid
### 3. 图形窗口分割```matlab
%% 图形窗口分割
x = linspace(0,2*pi,60)subplot(2,2,1) % 将幕布划分为2*2大小,选择第1个区域
plot(x,sin(x)-1)
title('sin(x)-1');axis([0,2*pi,-2,0]) % axis设置了当前图像的坐标轴范围
% x轴的范围从0到2π,y轴的范围从-2到0。subplot(2,1,2)
plot(x,cos(x)+1)
title('cos(x)+1');axis([0,2*pi,0,2])
总结
本篇介绍了:
- 矩阵的创建以及基本运算
- 函数的定义方法
- 逻辑控制的结构
- 绘图的方法
相关文章:

【MatLab手记】 --从0到了解超超超详过程!!!
文章目录 MatLab笔记一、命令行窗口二、变量命名规则三、数据类型1. 数字2. 字符与字符串3. 矩阵3.1 矩阵创建3.2 矩阵的修改和删除3.3 矩阵的拼接与重构重排3.4 矩阵的运算方法3.5 矩阵的下标 4. 元胞数组(类似数据容器)5. 结构体 四、逻辑与流程控制五…...

从零创建vue+elementui+sass+three.js项目
初始化: vue init webpack projectnamecd projectnamenpm install支持sass: npm install sass --save-dev npm install sass-loader7.1.0 --save-dev npm install node-sass4.12.0 --save-devbuild/webpack.base.conf.js添加 rules: [...,{test: /\.scss$/,loade…...

Linux通过使用scp和sftp发送或拉取文件
在通过 telnet 登录到远程服务器之后,你无法直接使用 telnet 发送文件。telnet 是一个纯文本协议,不支持文件传输。要发送文件,你需要使用其他工具,如 scp 或 sftp。以下是使用这两种工具发送文件的方法: 使用 scp 发…...

Jtti:服务器总是自动重启怎么办?
服务器总是自动重启可能是由于多种原因引起的,包括硬件故障、软件问题、配置错误或环境因素。以下是一些常见原因和相应的解决方案: 1. 硬件问题 电源故障:电源供应不稳定或电源模块故障可能导致服务器重启。 解决方案:检查电源供…...

北京大学c++程序设计听课笔记101
基本概念 程序运行期间,每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址(也称“入口地址”)。我们可以将函数的入口地址赋给一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以调用这个…...

一键生成本地SSL证书:打造HTTPS安全环境
一键生成本地SSL证书:打造HTTPS安全环境 日光下的寒林没有一丝杂质,空气里的冰冷仿佛来自故乡遥远的北国,带着一些相思,还有细微几至不可辨认的骆驼的铃声。–《心美,一切皆美》 在本地开发环境中启用 HTTPS 一直是许多…...

Unity类银河战士恶魔城学习总结(P124 CharacterStats UI玩家的UI)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了玩家属性栏,仓库,物品栏UI的制作 UI_StatSlot.cs 这个脚本是用来在Unity的UI上显示玩家属性…...

速盾:cdn 支持 php 吗?
在网络开发中,PHP 是一种广泛使用的服务器端脚本语言,用于创建动态网页和 web 应用程序。CDN(Content Delivery Network,内容分发网络)在内容分发方面具有强大的功能,那么它是否支持 PHP 呢? C…...

在linux中使用nload实时查看网卡流量
在Linux系统中,可以使用多种工具来查看网卡流量。以下是一些常用的命令行工具: ifconfig:这是最基本的网络接口查看命令,但在最新的Linux发行版中,ifconfig命令已经被ip命令替代。 ip:用来查看和操作路由…...

【JavaEE进阶】Spring 事务和事务传播机制
目录 1.事务回顾 1.1 什么是事务 1.2 为什么需要事务 1.3 事务的操作 2. Spring 中事务的实现 2.1 Spring 编程式事务(了解) 2.2 Spring声明式事务 Transactional 对比事务提交和回滚的日志 3. Transactional详解 3.1 rollbackFor 3.2 Transactional 注解什么时候会…...

Flink1.19编译并Standalone模式本地运行
1.首先下载源码 2.本地运行 新建local_conf和local_lib文件夹,并且将编译后的文件放入对应的目录 2.1 启动前参数配置 2.1.2 StandaloneSessionClusterEntrypoint启动参数修改 2.1.3 TaskManagerRunner启动参数修改 和StandaloneSessionClusterEntrypoint一样修改…...

gitlab-development-kit部署gitlab《二》
gitlab-development-kit部署gitlab《一》 环境 mac 12.7.4 xcode 14.2 gdk 0.2.16 gitlab-foss 13.7 QA xcode源码安装 # https://crifan.github.io/xcode_dev_summary/website/xcode_dev/install_xcode/ # https://xcodereleases.comopenssl1.1 源码安装 # https://open…...

Java面试之多线程并发篇(3)
前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!SynchronizedMap和ConcurrentHashMap有什么区别?什么是线程安全?Thread类中的yield方法有什么作用?Java线程池中submit() 和 execute()方法有…...

任何使用 Keras 进行迁移学习
在前面的文章中,我们介绍了如何使用 Keras 构建和训练全连接神经网络(MLP)、卷积神经网络(CNN)和循环神经网络(RNN)。本文将带你深入学习如何使用 迁移学习(Transfer Learning&#…...

Mac 使用mac 原生工具将mp4视频文件提取其中的 mp3 音频文件
简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研 学习经验:扎实基础 + 多做笔…...

【SQL】一文速通SQL
SQL知识概念介绍 1. Relation Schema vs Relation Instance 简单而言,Relation Schema 是一个表,有变量还有数据类型 R (A1, A2, … , An) e.g. Student (sid: integer, name: string, login: string, addr: string, gender: char) Relation insta…...

【学习】【HTML】块级元素,行内元素,行内块级元素
块级元素 块级元素是 HTML 中一类重要的元素,它们在页面布局中占据整行空间,通常用于创建页面的主要结构组件。 常见的块级元素有哪些? <div>: 通用的容器元素,常用于创建布局块。<p>:段落元素…...

握手协议是如何在SSL VPN中发挥作用的?
SSL握手协议:客户端和服务器通过握手协议建立一个会话。会话包含一组参数,主要有会话ID、对方的证书、加密算法列表(包括密钥交换算法、数据加密算法和MAC算法)、压缩算法以及主密钥。SSL会话可以被多个连接共享,以减少…...

机器学习 - 为 Jupyter Notebook 安装新的 Kernel
https://ipython.readthedocs.io/en/latest/install/kernel_install.html 当使用jupyter-notebook --no-browser 启动一个 notebook 时,默认使用了该 jupyter module 所在的 Python 环境作为 kernel,比如 C:\devel\Python\Python311。 如果,…...

CTF攻防世界小白刷题自学笔记13
1.fileinclude,难度:1,方向:Web 题目来源:宜兴网信办 题目描述:无 给一下题目链接:攻防世界Web方向新手模式第16题。 打开一看给了很多提示,什么language在index.php的第九行,flag在flag.php中,但事情显…...

Rust 模板匹配——根据指定图片查找处于大图中的位置(支持GPU加速)
Rust 模板匹配——根据指定图片查找处于大图中的位置(支持GPU加速) 01 前言 在手搓RPA工具的时候,总会碰到不好定位的情况,那么,就需要根据小图来找到对应屏幕上的位置(以图识图),这个需求也比较简单。想到市面上也有不少RPA工具都有这个功能,那么人家有的,俺也可以…...

JVM详解:类的加载过程
JVM中类的加载主要分为三个部分,分别为加载(loading),链接(linking),初始化(initing)。其中加载负责的主要是讲类文件加载到内存中变为类对象,不过此时只有基…...

Python →爬虫实践
爬取研究中心的书目 现在,想要把如下网站中的书目信息爬取出来。 案例一 耶鲁 Publications | Yale Law School 分析网页,如下图所示,需要爬取的页面,标签信息是“<p>”,所以用 itemssoup.find_all("p&…...

Visitor 访问者模式
1)意图 表示一个作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下定义用于这些元素的新操作。 2)结构 访问者模式的结构图如图 7-48 所示。 其中: Visitor(访问者) 为该对象结构中ConcreteElement 的每一个类声明一个 Vsit 操作。该操作的名字和特征标识…...

Mac解压包安装MongoDB8并设置launchd自启动
记录一下在mac上安装mongodb8过程,本机是M3芯片所以下载m芯片的安装包,intel芯片的类似操作。 首先下载安装程序包。 # M芯片下载地址 https://fastdl.mongodb.org/osx/mongodb-macos-arm64-8.0.3.tgz # intel芯片下载地址 https://fastdl.mongodb.org…...

Springboot采用jasypt加密配置
目录 前言 一、Jasypt简介 二、运用场景 三、整合Jasypt 2.1.环境配置 2.2.添加依赖 2.3.添加Jasypt配置 2.4.编写加/解密工具类 2.5.自定义加密属性前缀和后缀 2.6.防止密码泄露措施 2.61.自定义加密器 2.6.2通过环境变量指定加密盐值 总结 前言 在以往的多数项目中࿰…...

加载shellcode
#include <stdio.h>#include <windows.h>DWORD GetHash(const char* fun_name){ DWORD digest 0; while (*fun_name) { digest ((digest << 25) | (digest >> 7)); //循环右移 7 位 digest *fun_name; //累加…...

K8S如何基于Istio实现全链路HTTPS
K8S如何基于Istio实现全链路HTTPS Istio 简介Istio 是什么?为什么选择 Istio?Istio 的核心概念Service Mesh(服务网格)Data Plane(数据平面)Sidecar Mode(边车模式)Ambient Mode(环境模式)Control Plane(控制平面)Istio 的架构与组件Envoy ProxyIstiod其他组件Istio 的流量管…...

React Query在现代前端开发中的应用
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 React Query在现代前端开发中的应用 React Query在现代前端开发中的应用 React Query在现代前端开发中的应用 引言 React Query …...

【HAProxy09】企业级反向代理HAProxy高级功能之压缩功能与后端服务器健康性监测
HAProxy 高级功能 介绍 HAProxy 高级配置及实用案例 压缩功能 对响应给客户端的报文进行压缩,以节省网络带宽,但是会占用部分CPU性能 建议在后端服务器开启压缩功能,而非在HAProxy上开启压缩 注意:默认Ubuntu的包安装nginx开…...