Matlab基础语法篇(下)

news2024/11/22 21:53:31

Matlab基础语法(下)

  • 一、逻辑基础
    • (一)逻辑运算符
    • (二)all、any、find函数
    • (三)练习
  • 二、结构基础
    • (一)条件结构
      • (1)if-elseif-else-end
      • (2)switch-case-otherwise-end
    • (二)循环结构
      • (1)for-end
      • (2)while-end
      • (3)break、continue
    • (三)小结 + 练习
  • 三、函数基础
    • (一)自定义函数
      • (1)m文件定义函数
      • (2)匿名函数
    • (二)特殊函数
    • (三)常用函数
      • (1)数值运算、三角函数
      • (2)isempty函数
      • (3)meshgrid函数
      • (4)rng函数

一、逻辑基础

(一)逻辑运算符

在这里插入图片描述
MATLAB 推荐大家直接使用运算符进行计算,因此&、和~这三个符号的功能大家要牢记。
以“&”为例:

  • 针对矩阵运算时:“逻辑与&”是对A和B进行计算的,计算时会比较A和 B对应位置的元素。需要符合算术运算中介绍的五种兼容式即可。
  • “逻辑与&”不仅可以作用在逻辑值0和1上,还可以用于普通的数值上,这时候,MATLAB 会将非零数值视为逻辑1,将数值零视为逻辑0进行运算。
  • “逻辑与&”也可以进行连续运算,例如1&2&3。
  • 为避免运算优先级的问题,直接使用小括号来指定计算顺序。
A = randi([-3,3],2,4)
B = randi([-3,3],1,4)
A & B
A | B
~A
xor(3,4) % 亦或 相当于 xor(1,1)
xor(A,B)

在这里插入图片描述
另:

  1. 支持连续运算
A = randi([-3,3],2,4)
B = randi([-3,3],1,4)
C = randi([-3,3],1,4)
D = A & B & C

在这里插入图片描述

  1. 关系运算符 的优先级高于 逻辑运算符
3>4 & 2>-1 % 相当于 0 & 1

在这里插入图片描述

  1. 辨析:&&和|| vs &和|
    (1)&&和|| 只能标量(只有一个元素) 进行逻辑运算,不能对有多个元素的向量或者矩阵进行运算,而&和|可以
    (2)&&和||有短路功能,可以提高运行效率

(二)all、any、find函数

在这里插入图片描述

  1. all(A,dim) 与 & 类似
    在这里插入图片描述
    在这里插入图片描述
B = randi([1,100],2,5)
B(3) = 0 % 线性索引改值
all(B,1)
all(B,2)

在这里插入图片描述

  1. any(A,dim) 与 | 类似
B = randi([1,100],2,5)
B(3) = 0 % 线性索引改值
any(B,1)
any(B,2)

在这里插入图片描述

  1. find(X,n,direction)
    在这里插入图片描述
A = randi([0,2],2,3)
ind1 = find(A) %返回其中所有 非0元素 的 线性索引
ind2 = find(A,2) %返回其中 前两个非0元素 的 线性索引
ind3 = find(A,2,"last") %返回其中 后两个非0元素 的 线性索引
[row,col] = find(A) %按行列分开 生成 两个向量
[row,col,v] = find(A) % 多生成了一个A中非0元素的列向量

在这里插入图片描述

(三)练习

在这里插入图片描述
这里以5个同学为例

score = randi([50,100],5,3)
% 先将分数矩阵转化为逻辑矩阵
any(score<60,2) % 关注同学 --> 生成列向量
all(score>=60,1) % 关注科目 --> 生成行向量

在这里插入图片描述
在这里插入图片描述
这里也以5个同学为例

score = randi([50,100],5,3)
find(sum(score < 60,2) == 2) 
find(sum(score,2) > 260)

在这里插入图片描述


二、结构基础

(一)条件结构

(1)if-elseif-else-end

在这里插入图片描述

if [1,2;0,2] % 矩阵中的元素都非 0,表达式才会被当所逻辑值 1
    res = 0;
else
    res = 10;
end

res

在这里插入图片描述

% 若想要至少有一个元素非 0 就执行 if 语句
A = [1,2;0,2]
A(:)
% A(:) 先用线性索引把 A 拉成一个列向量,不能直接 any(A),这样生成的是向量
if any(A(:)) 
    res = 0;
else
    res = 10;
end

res

在这里插入图片描述

在这里插入图片描述

score = 87;
if (score >= 90) && (score <= 100)
    res = 1;
elseif (score >= 80) && (score < 90)  % elseif之间没有空格
    res = 2;
elseif (score >= 60) && (score < 80)
    res = 3;
elseif (score >= 0) && (score < 60)
    res = 4;
else
    res = 0;
end % 不要忘了写!

res

在这里插入图片描述

在这里插入图片描述

% 找最大值
a = 10;
b = 20;
c = 15;
if a > b
    if a > c
        max = a;
    else
        max = c;
    end
else
    if b > c
        max = b;
    else
        max = c;
    end
end

max

在这里插入图片描述

(2)switch-case-otherwise-end

在这里插入图片描述
在这里插入图片描述

% 注:开关表达式的计算结果必须是一个 数值标量或者是一个字符向量/字符串,不能是向量或矩阵
season = randi([1,4])
switch season
    case 1
        disp("春季");
    case 2
        disp("夏季");    
    case 3
        disp("秋季");
    otherwise
        disp("冬季"); % 加不加分号不影响输出结果
end
% 或
if season == 1
    disp("春季");
elseif season == 2
    disp("夏季");
elseif season == 3
    disp("秋季");
else
    disp("冬季");
end

在这里插入图片描述

(二)循环结构

(1)for-end

在这里插入图片描述
循环变量:用于迭代的变量名,它会在每次循环迭代中从向量或矩阵中取出的值。数值向量或者矩阵则表示了循环变量可以取值的范围,一旦循环变量遍历完数值向量或者矩阵中的所有值,循环就会结束

% for后跟的可以是一个向量,也可以是一个矩阵
A = randi([-3,3],2,3)
for i = A % 每次都会取出一 列 的值
    i
end

在这里插入图片描述
在这里插入图片描述

x = 1:6
res_sum = 0;
for i = x
    res_sum = res_sum + i;
end

res_sum

在这里插入图片描述

在这里插入图片描述

leap_year_num = 0;
for i = 1 : 9999
    if ((mod(i,4) == 0) && (mod(i,100) ~= 0)) || (mod(i,400) == 0)
        leap_year_num = leap_year_num + 1;
    end
end

leap_year_num

在这里插入图片描述

(2)while-end

在这里插入图片描述
在这里插入图片描述

f(1) = 1;
f(2) = 1;
n = 2;
while f(n) <= 99999
    n = n + 1;
    f(n) = f(n-1) + f(n-2);
end
n
f(n)

在这里插入图片描述

  1. 一个无限循环,在命令行窗口中按下快捷键 Ctrl + C来中断程序的运行
while 1
    disp("死循环");
end

在这里插入图片描述

  1. while 后面表达式的计算结果不一定非得是逻辑值1或0。如果表达式的计算结果是一个数值常数,则只有当这个常数为非零值时循环才会进行
i = 5;
while i
    i;
    i = i - 1;
end
i

在这里插入图片描述

(3)break、continue

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

for i = 1:10
    if mod(i,2) == 0
        continue;
    end
    i
end

在这里插入图片描述

在这里插入图片描述

n = 9;
is_prime = 1;
for i = 2:n-1
    if mod(n,i) == 0
        is_prime = 0;
        break;
    end
end
is_prime

在这里插入图片描述

(三)小结 + 练习

在这里插入图片描述
在这里插入图片描述

a = 6;
b = 10;
eps = 1e-8; %误差阈值
while 1
    c = (a+b)/2;
    fc = c^3 - 8*c^2 +c - 5;
    if abs(fc)<eps
        break;
    end
    fa = a^3 - 8*a^2 +a - 5;
    if fa * fc < 0
        b = c;
    else
        a = c;
    end
end

x0 = c;
x0

在这里插入图片描述


三、函数基础

(一)自定义函数

(1)m文件定义函数

无需关注具体的实现过程,需要编写额外的.m文件,定义完的函数保存为同函数名的m文件,放置在Matlab当前路径下

  1. 函数的基本结构(end可以省略)
    在这里插入图片描述
  2. 函数的调用
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
% code1.m 文件中
X = 1:20;
[max,min] = max_min__values(X)
% max_min__values.m文件中
function[max,min] = max_min_values(X)
max = subfun1(X);
min = subfun2(X);

    function r = subfun1(X)
        x1 = sort(X,'descend');
        r = x1(1);
    end

    function r = subfun2(X)
        x1 = sort(X);
        r = x1(1);
    end
end

在这里插入图片描述

(2)匿名函数

在这里插入图片描述

f1 = @(x,y)x.^2 + y.^2;
f1(2,3)

x = 1:5;
y = 0.1:0.1:0.5; %从 0.1,间隔 0.1,到 0.5
f1(x,y)

%双重匿名函数
f2 = @(a,b)@(x)a*x+b; % 外层变量:a,b  内层变量:x
f2(2,3) % 输入两个变量,返回一个单变量函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

f = @(a)@(x)exp(x)+x^a+x^(sqrt(x))-100; % 根据 a 的函数,获得 x 的函数
A = 0:0.1:2;
% fzero(fun,x0) x0:预测初始值
x = @(a)fzero(f(a),4); % 将 x 变为 a 的函数
X = @(A)arrayfun(@(a)x(a),A);  % 将函数应用于每个数组元素
Y = X(A)
% 相当于 Solution = @(A)(@(a)fzero(f(a),4),A)

在这里插入图片描述

(二)特殊函数

贝塞尔函数、beta函数、gamma函数……
有需求时去MATLAB帮助中心查看

(三)常用函数

(1)数值运算、三角函数

在这里插入图片描述
在这里插入图片描述

sqrt(1:9)
format long g % 取消掉科学计数法
sqrt(1:9)
sqrt(-4)
format short

exp(1:9)

在这里插入图片描述

(2)isempty函数

在这里插入图片描述
在这里插入图片描述

% 法一:
A = [1:9];
x = 10;
% A == x 元素全为 0 的逻辑向量
~isempty(find(A == x))
% 法二:
A = [1:9];
x = 10;
ismember(x,A)
% 推广:
A = [1:9];
x = 5:10;
ismember(x,A) %找 x 是否在 A 中存在

在这里插入图片描述

(3)meshgrid函数

在这里插入图片描述
在这里插入图片描述

% 基于向量 x 和 y 中包含的坐标来 返回 二维网络坐标
x = 0:4;
y = 0:3;
[X,Y] = meshgrid(x,y)
% 若写成[X,Y] = meshgrid(x),相当于 [X,Y] = meshgrid(x,x)
Z = X.^2 + Y.^2

在这里插入图片描述

(4)rng函数

在这里插入图片描述

% 设置随机数种子,这样能生成可重复的随机数
seed = 3;
rng(seed);
randi(10,3,3)
rng('shuffle'); %根据当前的时间来设置随机数种子

在这里插入图片描述


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

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

相关文章

通过albumentation对目标检测进行数据增强(简单直接)

albumentation官方文档看不懂&#xff1f;xml文件不知道如何操作&#xff1f;下面只需要修改部分代码即可上手使用 要使用这个方法之前需要按照albumentation这个库还有一些辅助库,自己看着来安装就行 pip install albumentation pip install opencv-python pip install json…

<数据集>蛋壳裂缝检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2520张 标注数量(xml文件个数)&#xff1a;2520 标注数量(txt文件个数)&#xff1a;2520 标注类别数&#xff1a;2 标注类别名称&#xff1a;[crack, egg] 序号类别名称图片数框数1crack245128352egg25142514 使…

揭秘饲料制粒机:生产颗粒料加工的利器

随着现代畜牧业的发展&#xff0c;饲料的质量和加工效率成为了养殖业者关注的焦点。在这个背景下&#xff0c;饲料制粒机——这一饲料加工设备的核心&#xff0c;凭借其稳定、环保的特点&#xff0c;逐渐加入养殖行业中。 一、饲料制粒机的工作原理 饲料制粒机主要通过挤压、切…

msyql (8.4,9.0) caching_sha2_password 转换 mysql_native_password用户认证

mysql 前言 caching_sha2_password 主要特性 用于增强用户账户密码的存储和验证安全性。这种插件利用 SHA-256 散列算法的变体来存储和验证密码 安全的密码散列&#xff1a; caching_sha2_password 使用基于 SHA-256 的算法来生成密码的散列值。这意味着即使数据库被未授权访…

【JS特效之手风琴效果】基于jquery实现手风琴网页特效(附源码)

HTMLCSSJS手风琴效果目录 &#x1f354;涉及知识&#x1f964;写在前面&#x1f367;一、网页主题&#x1f333;二、网页效果&#x1f40b;三、网页架构与技术3.1 脑海构思3.2 实现原理 &#x1f308;四、网页源码4.1 手风琴模块4.2 完整源码获取方式 &#x1f305; 作者寄语 &…

机械学习—零基础学习日志(高数05——函数概念与特性)

零基础为了学人工智能&#xff0c;真的开始复习高数 本小节讲解隐函数&#xff0c;有点神奇&#xff0c;我竟然完全没有隐函数记忆了。 隐函数 隐函数&#xff0c;我个人通俗理解就是&#xff0c;在复杂的环境里&#xff0c;发现纯净天地。例如&#xff0c;在外太空的某个大陆…

《JavaSE》---14.<面向对象系列之(附:this和super关键字)>

目录 系列文章目录 前言 一、为什么要有this引用 1. 用代码看有this与无this的区别 1.1 代码示例 1.2 输出结果&#xff1a; 1.3 代码示例&#xff1a; 1.4 输出结果&#xff1a; 2. this深度理解 3. 什么是this引用 3.1 this引用的概念 4. this引用的特性 二、th…

【TAROT学习日记】韦特体系塔罗牌学习(5)——皇帝 THE EMPEROR IV

韦特体系塔罗牌学习&#xff08;5&#xff09;——皇帝 THE EMPEROR IV 目录 韦特体系塔罗牌学习&#xff08;5&#xff09;——皇帝 THE EMPEROR IV牌面分析1. 基础信息2. 图片元素 正位牌意1. 关键词/句2.爱情婚姻3. 学业事业4. 人际财富5. 其他象征意 逆位牌意1. 关键词/句2…

大盘周期性复苏之际,英诺赛科的新叙事如何开讲?

半导体行业已经开始周期性复苏。 据同花顺iFinD统计&#xff0c;截至目前&#xff0c;已有37只半导体个股披露了上半年业绩预告&#xff0c;其中27股预喜&#xff0c;或扭亏或预增&#xff0c;预喜率超七成&#xff0c;长川科技净利预增幅度位居第一&#xff0c;暂列上半年半导…

Cadence OrCAD Capture原理图搭建及仿真方法

1 安装Cadence Allegro 略。 2 搭建原理图 2.1 打开软件 1、点击Capture CIS。 2、在弹出的产品选择栏点击OrCAD Capture&#xff0c;点击OK。 打开的软件界面如下&#xff1a; 2.2 新建工程 1、点击左上角File&#xff0c;New&#xff0c;Project&#xff0c;或者直接点…

王权与自由Steam国际服下载教程分享

王权与自由&#xff0c;一款集合了所有mmorpg游戏内玩法的游戏&#xff0c;包含爬塔、小队副本、团队副本、休闲竞技、装备打造、人物养成、攻城战、大型的pvp团战等多种游戏玩法&#xff0c;在游戏中只有我们想不到的内容&#xff0c;没有游戏不包含的内容&#xff0c;而且有意…

【Git远程操作】克隆远程仓库 https协议 | ssh协议

目录 前言 克隆远程仓库https协议 克隆远程仓库ssh协议 前言 这四个都是Git给我们提供的数据传输的协议&#xff0c;最常使用的还是https和ssh协议。本篇主要介绍还是这两种协议。 ssh协议&#xff1a;使用的公钥加密和公钥登录的机制&#xff08;体现的是实用性和安全性&am…

AIGC工具:IPAdapter和ControlNet 指导控制生成工具

ControlNet强调对生成过程的直接控制,如通过线条、边缘、形状等信息;而IPAdapter侧重于风格迁移和内容的间接引导。 IPAdapter 它专注于通过迁移图片风格来生成新的图像内容。IPAdapter的强项在于能够将一张图片的风格迁移到另一张图片上,实现风格融合,甚至可以进行多图风格…

【Android】ConstrainLayout约束布局基本操作

文章目录 介绍约束条件添加方式外边距设置删除方式 添加约束条件父级位置对齐方式基线对齐引导线约束屏障约束 约束偏差使用链控制线性组 介绍 约束布局ConstraintLayout是 Android Studio 2.3 起创建布局后的默认布局 主要是为了解决布局多层嵌套问题&#xff0c;以灵活的方式…

【你也能从零基础学会网站开发】 SQL Server 2000企业管理器基本介绍

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 SQL Server 20…

idea 配置jdk21 后 控制台中文乱码问题

1、 选择 add VM 填写&#xff1a;-Dfile.encodingGBK -Dfile.encodingGBK

Node对接支付宝沙箱完成支付完整流程

沙箱支付完整流程 一、进入支付宝沙箱网站二、进入沙箱环境三、下载【支付宝开放平台开发助手】四、打开【支付宝开放平台开发助手】工具&#xff0c;进行设置五、点击生成密钥点击打开文件位置 六、密钥格式转换七、回到沙箱配置密钥八、粘入应用工具九、需要应用的信息十、进…

算法:队列+宽搜

目录 题目一&#xff1a;N 叉树的层序遍历 题目二&#xff1a;二叉树的锯齿形层序遍历 题目三&#xff1a;二叉树最大宽度 题目四&#xff1a;在每个树行中找最大值 题目一&#xff1a;N 叉树的层序遍历 给定一个 N 叉树&#xff0c;返回其节点值的层序遍历。&#xff08;…

智能图片识别表格

文章目录 在线体验快速开始一、项目介绍篇1.1 PP-Structure概述1.2 PP-Structure核心功能&#xff1a;表格识别1.3 PP-Structure特点1.4 模块介绍1.4.1 TableDec.py1.4.2 app.py 二、核心代码介绍篇2.1 app.py2.2 TableDec.py2.3 扩展-模型选择3.4.1 版面分析模型3.4.2 表格识别…

Linux-mysql数据备份恢复

MySQL数据备份与恢复 一、备份介绍 1、为什么要备份 备份&#xff1a;能够防止由于机械故障以及人为误操作带来的数据丢失&#xff0c;例如将数据库文件保存在了其它地方。 冗余&#xff1a; 数据有多份冗余&#xff0c;但不等备份&#xff0c;只能防止机械故障带来的数据丢…