参考:
https://blog.csdn.net/yf210yf/article/details/42421539
https://jingyan.baidu.com/article/8cdccae92fad16315413cdd8.html

字符串分割

在对文件夹进行操作的时候,有时候我们不免要对路径进行分割,已提取具体某一段的路径字符串。
在这里有2中方法,以下分别介绍。

正则表达式方法regexp

1)借助正则表达式函数regexp的split模式。
其基本语法为:
S = regexp(str, char, ‘split’),str为要进行分割的字符串,char指明以何种字符串进行分割,字符串split就表示split模式。
值得注意的是,分割之后的结果是一个cell数组。也就是说结果的每个单元都是cell类型,所以如果要输出某单元字符串时,还需要对要使用的单元进行强制转换。图片是代码的结果。
这里写图片描述
以下的代码要实现的需求是,提取出路径的最后一部分的字符串,然后以备后续功能的使用

datasetCur = 'remote/result_4_bicu_2_ori'
res = regexp(datasetCur , '/', 'split');
str1 = char(str1(end));          % str1 = 'result_4_bicu_2_ori'

strsplit函数

2)直接使用字符串分割函数strsplit。
其基本语法为 str = strsplit(str,char);默认按照空白字符分割。
实现1)中相同的目的的代码如下:

datasetCur = 'remote/result_4_bicu_2_ori'
an = strsplit(datasetCur,'/');
str2 = char(an(end));        % str2 = 'result_4_bicu_2_ori'

字符串合成

既然有路径的分割就有路径的合成。这里也稍微提一下我所看到的路径合成的方法。

使用普通的方法‘[]’ 和fullfile函数

比如我要读取上面文件夹下的图像:img_100_SRF_4_LR.png,而这个文件夹所有的文件格式都是img_XXX_SRF_4_LR.png。“XXX”表示图像的编号,如果我们使用for循环来一张一张的读取图像并处理,代码如下:

for  imgID = 1:numOfImages
    imgName  = ['img_', num2str(imgID, '%03d'), '_SRF_4_LR.png'];
    img = imread(imgName);
    ... % 你要进行的操作

这里再补充一下,使用“[]”合成路径,是不带有文件分隔符’/’的,之所以讲这个小区别,是因为fullfile函数会自动填补上文件分割符。这一点也决定了2者使用环境下的不同。这里如果是合成路径就使用fullfile函数,比较方便,如要合成’data/my/result’的目标路径。而要是访问文件夹内的图像之类的,由于不需要文件分隔符,所以使用[]比较方便

path = fullfile('data','my','result')   % path = 'data\my\result';
str = ['data','my','result'];           % str = 'datamyresult'
参考: https://blog.csdn.net/yf210yf/article/details/42421539 https://jingyan.baidu.com/article/8cdccae92fad16315413cdd8.html字符串分割在对文件夹进行操作的时候,有时候我们不免要对路径进行分割,已提取具体某一段的路径字符串。 在这里有2中方法,以下分别介绍。正...
分割提取路径path中的各部分(所属文件路径文件名和后缀扩展名) filepath = 'a/b/c/name.pgm'; [pathstr, name, ext] = fileparts(filepath); # Matlab R2021a [pathstr, name, ext, versn] = fileparts(filepath); # 比较老的版本 # 效果: pathstr = 'a/b/c'; # 所属文件夹的路径 name = 'name'; # 文件名 ext = '.pgm'; #
caseFileName = 'E:\test\test.txt' nameList = strsplit(caseFileName,'\') nameTmp = char(nameList(length(nameList)))%分割之后是cell类型,需要转换为char类型 fileName = nameTmp(1:length(nameTmp)-4) % file...
作用:将字符合并成路径,会自动添加“/”;相比于[]合并字符生成路径的优点就是不需要手动输入“/”或者“\”。我们知道Linux下面和window下面路径中的间隔是不同的,如果使用[]需要输入“/”或者“\”,会让代码的移植性变差。 testpath = 'home/test'; test = fullfile(testpath,'test.png'); C = strsplit(str,delimiter) C = strsplit(str,delimiter,Name,Value) [C,matches] = strsplit(___) C = strsplit(str) 在空白处将 str 拆分为 C。空白字符等效于集合 {’ ‘,’\f’,’\n’,’\r’,’\t’,’\
MATLAB中,可以使用字符数组或字符串来存储和操作文本数据。字符数组是一维数组,每个元素可以是一个字符,而字符串MATLAB中的数据类型,可以存储一段文本。下面是一些示例来说明如何在MATLAB中处理数组和字符串: 创建字符数组: matlab Copy code arr = ['H', 'e', 'l', 'l', 'o']; disp(arr); % 输出:Hello 在这个示例中,我们创建了一个字符数组 arr,它包含了单个字符,最终输出的结果是字符串 "Hello"。 使用字符串数据类型: matlab Copy code str = "Hello"; disp(str); % 输出:Hello 在这个示例中,我们使用字符串数据类型来创建变量 str,并赋值为字符串 "Hello"。字符串数据类型以双引号 " " 括起来。 字符串的拼接: matlab Copy code str1 = "Hello"; str2 = "World"; result = str1 + " " + str2; disp(result); % 输出:Hello World
一个简单的函数,它检查一个字符串并返回一个简单的目录列表; 不对子目录字符串进行有效性检查。 A = PATH_PARTS(S) 返回包含由系统文件分隔符分隔的子字符串字符串元胞数组。 [A,B] = PATH_PARTS(S) 返回从输入字符串 S 解析出的目录字符串,其中 A 是字符串元胞数组,B 是一个结构体,其字段代表每个子目录。 [A,B,C] = PATH_PARTS(S) 返回根据元胞数组 A、结构 B 中的 S 确定的目录字符串,并作为长度相等的字符串数组返回。 ----- 请注意:FEX 上有许多有趣的提交,它们提供了更复杂的结果和处理目录的选项(见下文)。 #28442 - 目录到单元格#1570 - 目录#1492 - 子目录#3226 - 递归目录列表增强型 RDIR #12180 - 文件系列#28249 - 获取完整路径
文件数据导入和导出的方式有很多种,本文主要介绍一种比较万能的方法readtable和writetable。主体包含: 1.文件路径相关的关键字 2.文件的读取与写入(readtable与writetable) 3.MATLAB 中表格变量的使用
可以使用MATLAB内置的`arithenco`和`arithdeco`函数来实现算术编码和解码。下面是一个简单的例子,演示如何使用算术编码对一串字符进行编码和解码。 假设我们要编码的字符为“hello world”,我们可以先统计字符出现的频率,然后使用算术编码对其进行压缩。具体实现如下: ```matlab str = 'hello world'; % 要编码的字符串 counts = histcounts(str, unique(str)); % 统计字符出现的频率 p = counts/sum(counts); % 计算每个字符出现的概率 symbols = unique(str); % 确定字符集 code = arithenco(str, p, symbols); % 使用算术编码进行压缩 这里我们使用`histcounts`函数统计每个字符出现的频率,并计算每个字符出现的概率。然后使用`unique`函数确定字符集。最后使用`arithenco`函数对字符串进行压缩,得到压缩后的编码。 要解码压缩后的编码,我们可以使用算术解码将其还原为字符串。具体实现如下: ```matlab str2 = arithdeco(code, p, symbols); % 使用算术解码进行解压 这里我们使用`arithdeco`函数对压缩后的编码进行解压,得到还原后的字符串。 注意:算术编解码可以实现较高的压缩率,但由于计算复杂度较高,可能会导致较慢的运行速度。因此在实际应用中需要根据具体情况进行权衡和选择。