MATLAB—从入门到精通的第二天
在第一天的学习中,我们掌握了 MATLAB 的安装配置、基础语法、变量管理和运算符的使用。本文将深入讲解 控制结构(嵌套 if
、switch
)、循环类型 和 向量操作,帮助读者进一步掌握 MATLAB 的核心编程技能。
1. 条件语句进阶
1.1 嵌套 if
语句
嵌套 if
语句允许在一个条件分支中嵌入另一个条件判断,适用于处理多层级逻辑。
语法
if condition1% 当 condition1 为 true 时执行if condition2% 当 condition1 和 condition2 同时为 true 时执行end end
示例
判断一个数是否为 正偶数:
x = 10; if x > 0if mod(x, 2) == 0disp('正偶数');elsedisp('正奇数');end elsedisp('非正数'); end
注意事项
-
避免过度嵌套(一般不超过 3 层),否则代码可读性会降低。
-
使用逻辑运算符(
&&
、||
)简化多层条件:if x > 0 && mod(x, 2) == 0disp('正偶数'); end
1.2 switch
语句
switch
语句用于根据表达式的值执行不同的代码块,适合替代多层 if...elseif
结构。
语法
switch expressioncase value1% 当 expression == value1 时执行case value2% 当 expression == value2 时执行otherwise% 当无匹配 case 时执行 end
示例
根据星期数输出对应的名称:
day = 3; switch daycase 1disp('星期一');case 2disp('星期二');case 3disp('星期三');otherwisedisp('无效输入'); end % 输出:星期三
case
的多值匹配
一个 case
可以匹配多个值(使用元胞数组):
color = 'red'; switch colorcase {'red', 'yellow'}disp('暖色');case {'blue', 'green'}disp('冷色'); end % 输出:暖色
1.3 嵌套 switch
语句
switch
语句内部可以嵌套另一个 switch
,但实际开发中较少使用(优先考虑代码结构优化)。
示例
根据用户角色和权限显示菜单:
role = 'admin'; permission = 'write';switch rolecase 'admin'switch permissioncase 'read'disp('显示管理员只读菜单');case 'write'disp('显示管理员编辑菜单');endcase 'user'disp('显示用户菜单'); end % 输出:显示管理员编辑菜单
2. 循环结构
2.1 while
循环
while
循环在条件为真时重复执行代码块,适合未知迭代次数的场景。
语法
while condition% 循环体 end
示例
计算 1 到 100 的和:
sum = 0; i = 1; while i <= 100sum = sum + i;i = i + 1; end disp(sum); % 输出:5050
流程图
开始 → 检查条件 → 条件为真 → 执行循环体 → 更新条件 → 重复检查↓条件为假 → 结束循环
2.2 for
循环
for
循环用于遍历数组或指定次数的迭代,适合已知范围的循环。
语法
for index = start:step:end% 循环体 end
示例
遍历数组元素并计算平方:
A = [2, 4, 6, 8]; for k = 1:length(A)A(k) = A(k)^2; end disp(A); % 输出:[4, 16, 36, 64]
遍历矩阵
按列遍历矩阵:
matrix = [1 2; 3 4]; for col = matrixdisp(col); end % 输出: % 1 % 3 % 2 % 4
2.3 嵌套循环
嵌套循环用于处理多维数据(如矩阵运算)。
示例
生成乘法表:
for i = 1:9for j = 1:ifprintf('%d*%d=%d\t', j, i, i*j);endfprintf('\n'); end
输出
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ...
2.4 break
与 continue
-
break
:立即终止当前循环,跳转到循环外。 -
continue
:跳过当前迭代,进入下一次循环。
示例
查找第一个能被 7 整除的数:
for num = 100:200if mod(num, 7) ~= 0continue; % 跳过非整除情况enddisp(['找到:', num2str(num)]);break; % 找到后退出循环 end % 输出:找到:105
3. 向量操作
3.1 向量创建
向量是 MATLAB 的核心数据类型,分为 行向量 和 列向量。
方法 | 示例 | 说明 |
---|---|---|
直接输入 | v = [1 2 3 4] | 行向量 |
冒号运算符 | v = 1:2:10 | 生成 [1,3,5,7,9] |
linspace 函数 | v = linspace(0,1,5) | 生成 0 到 1 的 5 等分点 |
zeros /ones | v = zeros(1,5) | 零向量 [0,0,0,0,0] |
3.2 向量运算
加法与减法
向量维度必须一致:
A = [1 2 3]; B = [4 5 6]; C = A + B; % 输出:[5 7 9] D = A - B; % 输出:[-3 -3 -3]
标量乘法
v = [1 2 3]; result = 2 * v; % 输出:[2 4 6]
转置向量
使用单引号 '
或 transpose()
函数:
row = [1 2 3]; col = row'; % 转置为列向量 [1; 2; 3]
3.3 向量高级操作
追加向量
使用方括号 []
或 cat()
函数:
v1 = [1 2]; v2 = [3 4]; v3 = [v1 v2]; % 输出:[1 2 3 4] v4 = cat(2, v1, v2); % 水平拼接(同 [v1 v2])
向量模长
计算向量的欧几里得范数:
v = [3 4]; magnitude = norm(v); % 输出:5
向量点积
使用 dot()
函数或运算符 .*
配合 sum()
:
A = [1 2 3]; B = [4 5 6]; dot_product = dot(A, B); % 输出:32 dot_product_manual = sum(A .* B); % 输出:32
4. 应用案例
4.1 斐波那契数列生成
使用 for
循环生成前 10 项:
fib = zeros(1, 10); fib(1:2) = [1 1]; for i = 3:10fib(i) = fib(i-1) + fib(i-2); end disp(fib); % 输出:[1 1 2 3 5 8 13 21 34 55]
4.2 向量化计算
避免显式循环,提升代码效率:
% 计算向量元素的平方和 v = 1:100; sum_squares = sum(v.^2); % 输出:338350
5. 总结与练习
5.1 核心知识点
主题 | 关键内容 |
---|---|
嵌套 if | 多层级逻辑判断,避免过度嵌套 |
switch | 多分支条件匹配,支持多值 case |
while /for | 循环控制,break 与 continue 的使用 |
向量操作 | 创建、运算、模长与点积计算 |
5.2 练习题目
-
编写一个
switch
语句,根据月份返回季节(如 1-3 月为春季)。 -
使用嵌套循环生成一个 5x5 的矩阵,其中对角线元素为 1,其余为 0。
-
计算两个向量的夹角(公式:θ = arccos( (A·B) / (||A|| ||B||) ))。
6. 下一步学习建议
-
矩阵操作:学习矩阵乘法、逆矩阵和特征值计算。
-
函数编写:掌握函数参数传递与返回值处理。
-
数据可视化:使用
plot()
和scatter()
绘制二维/三维图形。
通过实践巩固知识,逐步掌握 MATLAB 在科学计算和工程分析中的强大能力!
相关文章:
MATLAB—从入门到精通的第二天
在第一天的学习中,我们掌握了 MATLAB 的安装配置、基础语法、变量管理和运算符的使用。本文将深入讲解 控制结构(嵌套 if、switch)、循环类型 和 向量操作,帮助读者进一步掌握 MATLAB 的核心编程技能。 1. 条件语句进阶 1.1 嵌套…...
韦伯望远镜的拉格朗日点计算推导过程,包含MATLAB和python运动轨迹仿真代码
研究过程 起源与提出:1687 年牛顿提出 “三体问题”,旨在研究三个可视为质点的天体在相互之间万有引力作用下的运动规律,但因运动方程过于复杂,难以得到完全解。欧拉的贡献1:1767 年,瑞士数学家莱昂哈德・…...
【 现代后端架构演进:微服务设计与云原生】
现代后端架构演进:微服务设计与云原生 一、架构演进历程 1. 单体架构到分布式系统 单体架构瓶颈 典型问题:代码耦合(代码行超百万级)、扩展困难(垂直扩容成本 > 1 0 5 >10^5 >105美元/节点)、技术…...
[JAVASE] 注解
一. 注解是什么? 注解是一种为程序元素提供元数据的方法.注解就是为程序做特殊标记的. 二. java内置的注解 分别是: 作用在代码的注解是: Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。 De…...
热成像仪真不错
我挂在外面的网路设备箱 室内的机柜 室外的猫 所用型号为优利德UTi160S,显示模式为(可见光与热成像)融合模式。...
Vue-Virtual-Scroller虚拟滚动
前端优化不可不避的一谈之虚拟滚动:众所周知,滚动是直挺挺的往dom树加东西,如果滚太多滚到万级,渲染过多就会卡顿,而vue-virtual-scroll的灵活懒渲染就能解决这个问题 1,下载与配置 npm install --save v…...
Matlab:矩阵运算篇——矩阵
目录 1.定义 实例——创建矩阵 实例——创建复数矩阵 2.矩阵的生成 实例——M文件矩阵 2.利用文本创建 实例——创建生活用品矩阵 3.创建特殊矩阵 实例——生成特殊矩阵 4.矩阵元素的运算 1.矩阵元素的修改 实例——新矩阵的生成 2.矩阵的变维 实例——矩阵维度修…...
[Java]使用java进行JDBC编程
首先要从中央仓库下载api(类似驱动程序),为了链接java和mysql 下载jar包,需要注意的是jar包的版本要和mysql保持一致 下面是新建文件夹lib,把jar包放进去,并添加为库 sql固定的情况下运行 import com.mysql.cj.jdbc.MysqlDataSo…...
HippoRAG 2 原理精读
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 整体流程离线索引阶段在线检索和问答阶段 总结 整体流程 从上图可以看出,整个流程分为两个阶段 1、离线索引阶段 2、在线检索和问答阶段 离线索引阶段…...
HTTPS协议原理:在Linux世界里的加密冒险
大家好,欢迎来到这次奇妙的HTTPS协议探险之旅!今天,我们将一起潜入Linux的深处,揭开HTTPS协议那神秘而迷人的面纱。别担心,即使你是技术小白,也能在这场冒险中找到乐趣和收获。想象一下,你是一位…...
Spring Boot启动流程及源码实现深度解析
Spring Boot启动流程及源码实现深度解析 一、启动流程概述 Spring Boot的启动流程围绕SpringApplication类展开,核心流程可分为以下几个阶段: 初始化阶段:推断应用类型,加载ApplicationContextInitializer和ApplicationListene…...
使用pip在Windows机器上安装Open Webui,配合Ollama调用本地大模型
之前的文章分享过在 linux 服务器上安装,并使用Open-webui 来实现从页面上访问本地大模型的访问。也写了文章分享了我在家里 Windows Server 台式机上安装 Ollama 部署本地大模型,并分别使用 Chatbox 和 CherryStudio 来访问本地的大模型。今天我来分享一…...
go map的声明和使用
1.简介 map是key-value数据结构,又称为字段或者关联数据。类似其他语言的集合,map在go中是引用类型,必须初始化才能使用。 2.语法 map[keytype]valuetype keytype:表示间的类型。可以是基本数据类型,还可以是指针、channl等。…...
word毕业论文“et al.”替换为“等”——宏
Sub 中文参考文献改等()中文参考文献改等 宏Selection.Find.ClearFormattingSelection.Find.Replacement.ClearFormattingWith Selection.Find.Text "([一-龥], )et al.".Replacement.Text "\1等.".Forward True.Wrap wdFindContinue.Format False.Ma…...
23. 观察者模式
原文地址: 观察者模式 更多内容请关注:智想天开 1. 观察者模式简介 观察者模式(Observer Pattern)是一种行为型设计模式,用于建立对象之间的一种一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都…...
go的”ambiguous import in multiple modules”
执行“go mod tidy”报如下错误: go mod tidy -compat1.17 go: finding module for package github.com/gomooon/goredis go: found github.com/gomooon/goredis in github.com/gomooon/goredis v0.3.5 go: github.com/gomooon/core importsgithub.com/gomooon/gor…...
【鸿蒙开发】MongoDB入门
https://www.mongodb.com/try/download/community 下载MongoDB: var mongoose require("mongoose");// localhost 域名,代表本机 // 127.0.0.1 ip , 代码本机 mongoose.connect("mongodb://localhost:27017/jiaju").then(() > {console.l…...
【应用篇】MLU上deepseek/QwQ-32B+dify实现workflow应用
文章目录 前言一、平台环境选择二、创建容器应用三、启动服务1.下载deepseekR1-14B模型2.VLLM启动服务3.postman测试服务 四、workflow搭建1.搭建第一个工作流2.详细配置 五、效果演示 前言 本章主要讲解如何用paas平台,实现智能体应用 本章中大模型我们使用deeps…...
vue组件库el-menu导航菜单设置index,地址不会变更的问题
请先确认 1.路由已配置好 route-index.js如下, 2.view-ProHome.vue中已预留路由展示位 3.导航菜单复制组件库,并做修改 其中index与路由配置的地址一致 运行后发现点击菜单,url地址还是不变,查看组件库 Element - The worlds …...
防抖和节流
防抖(Debounce)和节流(Throttle)是前端开发中常用的两种性能优化技术,主要用于控制高频事件的触发频率,避免不必要的性能消耗。 1. 防抖(Debounce) 防抖的核心思想:在事…...
Deepseek可以通过多种方式帮助CAD加速工作
自动化操作:通过Deepseek的AI能力,可以编写脚本来自动化重复性任务。例如,使用Python脚本调用Deepseek API,在CAD中实现自动化操作。 插件开发:结合Deepseek进行二次开发,可以创建自定义的CAD插件。例如&a…...
基于Spring Boot的宠物猫认养系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器
开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器 目录 开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器本项目未经授权,禁止商用!本项目未经授权,禁止商用!本项目未经授权&…...
Vue3 模板引用:打破数据驱动的次元壁(附高阶玩法)
在数据驱动的Vue世界中,模板引用(Template Refs)是我们与真实DOM对话的秘密通道。本文将带你深入理解这个"逃生舱"的正确打开方式,并分享实战中的高阶技巧。 一、基础入门:建立DOM连接 1. 创建模板引用 &…...
第五天 Labview数据记录(5.5 SQL数据库读写)
5.5 SQL数据库读写 SQL 数据库读写操作是现代软件开发、数据分析和企业信息系统的核心功能。其意义不仅体现在技术层面,还涉及到业务流程优化、数据管理、决策支持等多个方面。以下是 SQL 数据库读写操作的重要意义:1. 数据存储与管理;2. 支…...

微信小程序项目引入图片问题:Error: module ‘assets/img/topImg.jpg.js‘ is not defined
问题与处理策略 问题描述 在微信小程序项目中,通过 require 引入图片文件,报如下错误 Error: module assets/img/topImg.jpg.js is not defined, require args is ../../assets/img/topImg.jpg# 翻译错误:未定义模块“assets/img/topImg.…...
02C#基本结构篇(D4_注释-访问修饰符-标识符-关键字-运算符-流程控制语句)
目录 一、注释 1. 单行注释 2. 多行注释 3. XML文档注释 4. 使用建议和最佳实践: 二、访问修饰符 1. public 2. private 3. protected 4. internal 5. protected internal 或 protected and internal 6. private protected 或 private and protected 7.…...
Python:正则表达式
正则表达式的基础和应用 一、正则表达式核心语法(四大基石) 1. 元字符(特殊符号) 定位符 ^:匹配字符串开始位置 $:匹配字符串结束位置 \b:匹配单词边界(如 \bword\b 匹配…...
ChatGPT4.5详细介绍和API调用详细教程
OpenAI在2月27日发布GPT-4.5的研究预览版——这是迄今为止OpenAI最强大、最出色的聊天模型。GPT-4.5在扩大预训练和微调规模方面迈出了重要的一步。通过扩大无监督学习的规模,GPT-4.5提升了识别内容中的模式、建立内容关联和生成对于内容的见解的能力,但…...
linux makefile tutorial
一个makefile的教程,几个小时就能看完,对makefile有个总体加细节的系统了解,非常不错: Learn Makefiles With the tastiest examples 中文翻译版: 起步 - Makefile 教程 (gavinliu6.github.io) gcc官网手册&#x…...
学习C2CRS Ⅲ (Response Generation Module)
代码地址:https://github.com/RUCAIBox/WSDM2022-C2CRS 论文地址:https://arxiv.org/abs/2201.02732 CFSelectionConvModel模型结构与功能 CFSelectionConvModel 是一个用于对话推荐系统的端到端模型,结合了知识图谱(KG)、评论信息和对话上下文来生成对话响应。它通过以…...
SpringBoot全栈开发:从数据库到Markdown文件导出的终极实践指南
一、SpringBoot后端核心实现 1.1 数据库数据转MD文件 通过SpringBoot实现数据库内容导出为Markdown文件,是文档自动化生成的关键技术: GetMapping("/download") public void exportMd(HttpServletResponse response, Integer id) {Content …...
go函数详解
1.简介 函数是组织好的、可重复使用的,用于执行指定任务的代码块,为了完成某一个功能的程序指令的集合,称为函数。go语言中支持:函数、匿名函数和闭包。 2.函数的定义 func 函数名 (形参列表) (返回值列表){ 函数体 return …...
MVCC实现原理
一、引言 在现代数据库管理系统中,数据的一致性和并发性是两个至关重要的特性。传统的锁机制虽然有效,但也存在着性能瓶颈,特别是在高并发环境下,锁的争用会导致系统响应时间变慢,甚至引发死锁等问题。为了克服这些挑…...
通过Golang的container/list实现LRU缓存算法
文章目录 力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2. 插入元素3. 删除元素4. 遍历链表5. 获取链表长度使用场景注意事项 源代码阅读 在 Go 语言中,container/list 包提供了一个双向链表的实现。链表是一种常见的数据结构&#…...
网络编程7天学java
* 网络编程:两台或两台以上的主机构成一个网络 * IP地址:标志网络中的一个通信实体的地址 * 端口号:区分不同应用程序 * 网络通信协议:ISO参考模型(7层),TCP/IP协议(4层)…...
在 IntelliJ IDEA 中配置 Git
1. 确保已安装 Git 在配置之前,确保你的系统已经安装了 Git。 检查是否已安装 Git: bash 复制 git --version 如果未安装,请前往 Git 官网 下载并安装。 2. 在 IntelliJ IDEA 中配置 Git 打开 IntelliJ IDEA。 进入设置: Windo…...
【Godot4.4】Rect2总结
概述 Rect2是2D场景中比较重要的一种数据类型。 Rect2的本质含义是2D场景的轴对齐包围盒,而不是可以自由变换的矩形。 Rect2提供了一些方法,可以方便的判断Rect2之间是否重叠、包含等,并可以获得重叠的区域。也可以获得两个Rect2的包围盒。…...
git使用命令总结
文章目录 Git 复制创建提交步骤Git 全局设置:创建 git 仓库:已有仓库? 遇到问题解决办法:问题一先git pull一下,具体流程为以下几步: 详细步骤 Git 复制 git clone -b RobotModelSetting/develop https://gitlab.123/PROJECT/123.git创建提…...
Unity DOTS从入门到精通之 C# Job System
文章目录 前言安装 DOTS 包C# 任务系统Mono 环境DOTS 环境运行作业NativeContainer 前言 作为 DOTS 教程,我们将创建一个旋转立方体的简单程序,并将传统的 Unity 设计转换为 DOTS 设计。 Unity 2022.3.52f1Entities 1.3.10 安装 DOTS 包 要安装 DOTS…...
linux下的网络抓包(tcpdump)介绍
linux下的网络抓包[tcpdump]介绍 前言tcpdump1. 安装 tcpdump2. 基本抓包命令3. 过滤器使用4. 保存捕获的数据包 异常指标1. 连接建立与断开相关指标异常 SYN 包异常 FIN 或 RST 包 2. 流量相关指标异常流量峰值异常源或目的 IP 流量 3. 端口相关指标异常端口使用端口扫描 4. 数…...
深入理解 Linux 中的 -h 选项:让命令输出更“人性化”
在 Linux 系统中,命令行工具是系统管理员和普通用户最常用的交互方式之一。然而,命令行输出往往充满了技术性术语和数字,对于初学者或非技术用户来说可能显得晦涩难懂。幸运的是,许多 Linux 命令都提供了一个非常实用的选项&#…...
selenium的鼠标操作
1、鼠标操作 鼠标时间对应的方法在那个类中? ActionChains类,实例化 鼠标对象 1、context_click(element) # 右击 2、double_click(element) #双击 3、double_and_drop(source, target) # 拖拽 4、move_to_element(element) # 悬停 【重点】 5、perform() …...
STM32——GPIO介绍
GPIO(General-Purpose IO ports,通用输入/输出接口)模块是STM32的外设接口的核心部分,用于感知外界信号(输入模式)和控制外部设备(输出模式),支持多种工作模式和配置选项。 1、GPIO 基本结构 STM32F407 的每个 GPIO 引脚均可独立配置,主要特性包括: 9 组 GPIO 端口…...
Word 小黑第15套
对应大猫16 修改样式集 导航 -查找 第一章标题不显示 再选中文字 点击标题一 修改标题格式 格式 -段落 -换行和分页 勾选与下段同页 添加脚注 (脚注默认位于底部 )在脚注插入文档属性: -插入 -文档部件 -域 类别选择文档信息,域…...
linux自启动服务
在Linux环境中,systemd是一个系统和服务管理器,它为每个服务使用.service文件进行配置。systemctl是用于控制系统服务的主要工具。本文将详细介绍如何使用systemctl来管理vsftpd服务,以及如何设置服务自启动。 使用Systemd设置自启动服务 创…...
react使用拖拽,缩放组件,采用react-rnd解决 -完整版
屏幕录制2025-03-10 10.16.06 以下代码仅提供左侧可视化区域 右侧数据根据你们的存储数据来 大家直接看Rnd标签设置的属性即可!!!!! /*** 用户拖拽水印的最终位置信息*/ export interface ProductWatermarkValue {wat…...
通过 ElasticSearch的Python API和`curl` 命令获取Elasticsearch 所有索引名称
导言 在大数据管理和实时搜索场景中,Elasticsearch 是一款不可或缺的工具。无论是开发调试、数据维护,还是系统监控,快速列出所有索引名称都是一个高频需求。本文将手把手教你如何通过 Python 客户端连接 Elasticsearch,并用两种方…...
Flutter:StatelessWidget vs StatefulWidget 深度解析
目录 1. 引言 2. StatelessWidget(无状态组件) 2.1 定义与特点 2.2 代码示例 3. StatefulWidget(有状态组件) 3.1 定义与特点 3.2 代码示例 4. StatelessWidget vs StatefulWidget 对比 5. StatefulWidget 生命周期 5.1…...
[密码学实战]Java实现国密TLSv1.3单向认证
一、代码运行结果 1.1 运行环境 1.2 运行结果 1.3 项目架构 二、TLS 协议基础与国密背景 2.1 TLS 协议的核心作用 TLS(Transport Layer Security) 是保障网络通信安全的加密协议,位于 TCP/IP 协议栈的应用层和传输层之间,提供: • 数据机密性:通过对称加密算法(如 AE…...