MATLAB 使用教程 —— 常用函数

    • 字符串
      • strmatch 函数:字符串匹配
    • 存在性
      • exist 函数:检查是否存在
      • isfield 函数:检查结构体中是否存在特定字段
    • 文件相关
      • fileparts 函数:分解文件路径
      • fullfile 函数:构建完整文件路径

字符串

strmatch 函数:字符串匹配

strmatch 是一个用于匹配字符串的函数,它用于查找一个字符串是否与目标字符串完全或部分匹配。strmatch 是区分大小写的。

该函数会返回匹配字符串的位置或与目标字符串匹配的索引,通常用于字符串匹配的情况。

index = strmatch(str, strArray)
  • str:要匹配的目标字符串,可以是一个字符串(字符向量)或字符串数组。
  • strArray:字符串数组或一个字符串的单元格数组,包含多个字符串,strmatch 会检查每个字符串与目标字符串 str 的匹配情况。
  • index:返回一个索引或匹配的位置。如果有多个匹配项,返回这些匹配项的位置。如果没有匹配项,则返回空数组。返回的 index 是 strArray 中与 str 匹配的字符串的索引。

用法一:查找匹配字符串的位置

strArray = {'apple', 'banana', 'cherry', 'pineapple'};
index = strmatch('apple', strArray);
disp(index);  % 1 4

strmatch 找到了两个匹配的 “apple”,一个在数组的第 1 位,另一个在第 4 位。

用法二:检查字符串的某一部分字符
检查字符串 date 的前四个字符是否是 “2024”。如果是,则将变量 year 设置为 2024。

date = '20241111';
if(strmatch(date(1:4),'2024'))year = 2024;
end  

存在性

exist 函数:检查是否存在

exist 是一个用于检查变量、函数、文件或其他对象是否存在的函数。它可以返回不同类型对象的存在性信息。

exist 的返回值有助于判断对象的类型和状态,通常与 if 语句结合使用,以确保代码在运行时能正确地处理缺失的文件或变量。

exist 函数的基本语法如下:

status = exist(name)
status = exist(name, 'type')
  • name:要检查的对象的名称,通常是字符串或字符向量。它可以是变量、函数、文件、类、目录等的名称。
  • ‘type’ (可选):该参数指定要检查的对象类型。‘var’:变量,‘builtin’:内建函数,‘file’:文件,‘dir’:文件夹,‘class’:类。

返回的数字取决于 name 和 type 的组合:

  • 0:对象不存在。
  • 1:如果是变量,表示变量存在。

用法一:检查文件的存在性
在处理文件时,通常会使用 exist 来检查文件是否存在。例如,在读取数据文件之前:

filename = 'data.txt';
if exist(filename, 'file') == 2data = load(filename);
elsedisp('File does not exist!');
end

用法二:检查变量的存在性
在运行代码时,可以使用 exist 来确认变量是否已定义:

if exist('myVar', 'var') ~= 1  % 如果返回值不等于 1disp('Variable does not exist');
elsedisp('Variable exists');
end

用法三:检查变量是否存在,如果不存在或为空,赋默认值

if(~exist('res') | isempty(res))res = 1.5;
end

isfield 函数:检查结构体中是否存在特定字段

isfield 是 MATLAB 中用于检测某个结构体中是否存在特定字段的函数。

其基本语法如下:

tf = isfield(S, 'fieldname')
  • S:要检查的结构体。
  • ‘fieldname’:需要检查是否存在的字段名称(字符串形式)。
  • tf:返回一个布尔值,如果 fieldname 是结构体 S 中的字段,则返回 true;否则返回 false。
S.name = 'John';
S.age = 30;% 检查是否存在 'name' 字段
isNameField = isfield(S, 'name')  % 返回 true% 检查是否存在 'gender' 字段
isGenderField = isfield(S, 'gender')  % 返回 false

用法一:检查结构体中是否有某个字段,以便赋值

if(isfield(objs,'data'))data  = objs.data;
elsedata = [];
end

文件相关

fileparts 函数:分解文件路径

下面的这行代码通过 mfilename('fullpath') 获取当前脚本的完整路径,并使用 fileparts 函数提取文件的路径部分(即 this_dir)。this_dir 存储了当前脚本所在的文件夹路径,即当前脚本的父目录

[this_dir, ~, ~] = fileparts(mfilename('fullpath'));

fileparts 是 MATLAB 中用于分解文件路径的函数,它将一个完整的文件路径拆解成不同的部分,通常返回文件所在的目录路径、文件名和扩展名。语法如下:

[folder, name, ext] = fileparts(filepath)
  • filepath:一个字符串或字符数组,表示完整的文件路径,包含文件所在的文件夹、文件名和扩展名。这个路径可以是绝对路径或相对路径。
  • folder:返回文件路径的目录部分,即文件所在的文件夹的路径。如果 filepath 是文件名,则返回当前工作目录。
  • name:返回文件的名称,不包括扩展名。
  • ext:返回文件的扩展名(以点 . 开头),如果文件没有扩展名,则返回空字符串。

具体例子如,

filepath = 'C:\Users\admin\Documents\myfile.txt';
[folder, name, ext] = fileparts(filepath);
  • folder = ‘C:\Users\admin\Documents’
  • name = ‘myfile’
  • ext = ‘.txt’

fullfile 函数:构建完整文件路径

与 fileparts 相对的是 fullfile 函数,用于将上面三部分构建成完整路径

fileparts 可以用于从路径中提取文件夹和文件名部分,然后通过 fullfile 函数重新构建路径。

[folder, name, ext] = fileparts('C:\Users\admin\Documents\myfile.txt');
newpath = fullfile(folder, [name, '_new', ext]);
% 这会生成 C:\Users\admin\Documents\myfile_new.txt

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

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

相关文章

香港电讯连续蝉联香港01「大湾区企业同创大奖」

香港电讯非常荣幸地连续第四年荣获「香港01大湾区企业同创大奖」殊荣,以表扬我们在大湾区业务所取得的卓越成绩,以及我们积极促进区内跨境业务方面的贡献。 面对企业拓展业务的迫切需求,香港电讯提供全面的跨境数码方案,包括SD-WA…

Vue3.js - 一文看懂Vuex

1. 前言 Vuex 是 Vue.js 的官方状态管理库,用于在 Vue 应用中管理组件之间共享的状态。Vuex 适用于中大型应用,它将组件的共享状态集中管理,可以避免组件间传递 props 或事件的复杂性。 2. 核心概念 我们可以将Vuex想象为一个大型的Vue&…

PdServer:调用MidjourneyAPI完成静夜思图文生成

欢迎沟通讨论,WX: cdszsz。公号:AIGC中文站。 今天我们将使用PdServer,通过Qwen大模型完成古诗的解析与prompt的生成,然后调用MidjourneyAPI完成图片的生成。有了文案和图片,我们就可以将其生成为一个古诗讲读视频。从…

融合创新:CNN+LSTM在深度学习中的高效应用,助力科研发表高影响因子文章!

2024深度学习发论文&模型涨点之——CNNLSTM 结合CNN(卷积神经网络)和LSTM(长短期记忆网络)是一种常见的深度学习模型组合,广泛应用于各种任务,特别是时间序列预测和序列数据处理。 CNNLSTM是一种深度学…

20241114在飞凌的OK3588-C的核心板上跑Linux R4时通过iperf3测试以太网卡的实际网速

20241114在飞凌的OK3588-C的核心板上跑Linux R4时通过iperf3测试以太网卡的实际网速 2024/11/14 21:09 《OK3588-C_Linux5.10.66Qt5.15.2_用户使用手册_V1.2_20240321.pdf》 飞凌文档上的配置有点不一样,需要修正: 3.2.15 以太网配置 OK3588-C板载两个千…

鸿蒙开发,Arkts 如何调用接口

面向万物互联时代,华为提出了“一次开发多端部署、可分可合自由流转、统一生态原生智能”三大应用与服务开发理念。针对多设备、多入口、服务可分可合等特性,华为提供了多种能力协助开发者降低开发门槛。在此背景下,HarmonyOS基于JS/TS语言体…

JavaScript方法修改 input type=file 样式

html中的<input type "file">的样式很难修改&#xff0c;又跟页面风格很不匹配。我就尝试了几种方法&#xff0c;但是不管是用label还是用opacity:0都很麻烦&#xff0c;还老是出问题&#xff0c;所以最后还是用JavaScript来解决。 下面附上代码&#xff1a;…

安装仓库,ssh以及NFS

安装仓库 1、源码安装 >自定义组件 2、软件包安装&#xff1a;rpm / dpkg ↓ (.rpm) / (.deb) 3、apt / yum >仓库 apt仓库&#xff1a; 安装源 >在线 / 离线 >包含可用的deb包 ↓ 元信息>包与包之间的依赖关系 在线源&#xff1a;必须要联网&#xff0c;包…

[Docker#9] 存储卷 | Volume、Bind、Tmpfs | -v/mount | MySQL 灾难恢复 | 问题

目录 1. 什么是存储卷? 2. 生活案例 3. 为什么需要存储卷? 4. 存储卷分类 一. 管理卷 Volume 创建卷 通过 -v 或 --mount 指定 1. -v 语法 命令格式 参数说明 2. --mount 语法 命令格式 参数说明 验证 二. 绑定卷 (Bind Mount) 1. 绑定卷概述 2. 创建绑定卷…

CVPR2024-6-可学习点云采样“LTA-PCS: Learnable Task-Agnostic Point Cloud Sampling”

文章摘要&#xff1a; 最近&#xff0c;许多方法直接对不同任务的点云进行操作。当点云尺寸较大时&#xff0c;这些方法的计算量和存储要求更高。为了减少所需的计算和存储&#xff0c;一种可能的解决方案是对点云进行采样。在本文中&#xff0c;我们提出了第一个可学习的与任务…

react + ts定义接口类型写法

接口&#xff08;未进行ts定义&#xff09; export async function UserList(params: {// keyword?: string;current?: number;pageSize?: number;},// options?: { [key: string]: any }, ) {return request<API1.UserList>(http://geek.itheima.net/v1_0/mp/artic…

数据库基础

数据库基础 什么是数据库主流数据库数据库的基本使用连接服务器服务器管理服务器、数据库、表之间的关系数据库基本指令 MySQL架构SQL分类存储引擎什么是存储引擎查看存储引擎存储引擎对比 什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库&#xff1f; …

【论文复现】基于标签相关性的多标签学习

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀基于标签相关性的多标签学习 论文概述什么是多标签学习论文贡献 算法流程挖掘“主题“——提取标签相关性训练 &#x1d440; &#x1d447; …

MMCloud+JuiceFS:云端Nextflow工作流的新方案

在云计算和生物信息学领域&#xff0c;执行大规模计算任务时的性能与成本效率至关重要。MemVerge推出的JuiceFlow通过JuiceFS和云端Memory Machine Cloud&#xff08;简称“MMCloud”&#xff09;平台&#xff0c;为Nextflow工作流&#xff08;pipeline&#xff09;提供了一种高…

【Linux】 shell 学习汇总[转载]

转载地址&#xff1a;https://blog.csdn.net/baidu_33718858/article/details/81453835 一些平时使用过程中的知识点积累&#xff0c;来源都附上了博客&#xff0c;添加了一些自己的总结。 感触&#xff1a;linux命令用熟了相当提高工作效率&#xff0c;有时候用Python写十几行…

天云数据联手举办“科学传播沙龙”活动,探讨Sora是否会带来新的科学革命

4月18日&#xff0c;由北京市科协主办&#xff0c;北京科技记协承办&#xff0c;中关村创新研修学院、天云融创数据科技&#xff08;北京&#xff09;有限公司协办的“AIGC塑造数字内容生产新范式”科学传播沙龙在京举办&#xff0c;活动由北京市科协宣传文化部二级调研员、北京…

LlamaIndex+本地部署InternLM实践

1.环境配置 1.1 配置基础环境 这里以在 Intern Studio 服务器上部署 LlamaIndex 为例。 首先&#xff0c;打开 Intern Studio 界面&#xff0c;点击 创建开发机 配置开发机系统 填写 开发机名称 后&#xff0c;点击 选择镜像 使用 Cuda11.7-conda 镜像&#xff0c;然后在资源…

uni-segmented-control 分段器添加数量提示

1、 在 template 内写入 uni-segmented-control 基础写法 <uni-segmented-control :current"current" :values"items" :style-type"styleType" clickItem"onClickItem" activeColor"#81D8D0" />2、在 script 里面写…

Linux篇(用户管理命令)

目录 一、用户与用户组 1. 为什么要做用户与用户组管理 2. Linux的用户及用户组 2.1. Linux的多用户多任务 2.2. 什么是用户 2.3. 什么是用户组 2.4. 用户和用户组的关系 二、用户和用户组管理 1. 用户组管理 1.1. 用户组添加 /etc/group文件结构 1.2. 用户组修改 …

编程之路,从0开始:内存函数

Hello大家好&#xff01;很高兴我们又见面了。 给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 今天我们来讲C语言中的内存函数。 目录 1、memcpy内存复制 2、memmove可重叠内存拷贝 3、memset设置字符 4、memcmp比较 1、memcpy内存复制 memcpy就是内存复制…