matlab命令批量重命名,MATLAB中预定义对话框之文件打开对话框以及如何批量重命名...

函数:uigetfile。

d6f0f32199f9131affa08586bbd287ea.png这个函数的名字分成三部分,也容易理解,ui:用户界面,get:获得,file:文件。加在一块就是给你一个界面去选择(获得)一个文件。

用法:首先说一下这个函数获得的仅仅是文件名和文件路径,还有一个可省缺的输出。带小扩号的表示可以省略。

cf2e7073d34cdaa5b03d54b265d1be06.png

拓展名要用大括号括起来且不同拓展名之间用分号隔开,如:

{'*.jpg';'*.bmp';'*.png'}

第一个返回参数是文件名(带拓展名),第二个返回参数是该文件所在的路径(最后带'\',而uigetdir函数不带,以后讲),第三个参数是表示你选的是第几个拓展名。

405f9ef3e946abb8661d8cb929beb619.png

点击‘’打开‘’(被水印挡住了

d6f0f32199f9131affa08586bbd287ea.png)后,在命令行中显示的返回的值如下:

fName =

cancle.png

pName =

C:\Users\F\Desktop\icons\

index =

3

'*.png',是第三个所以index是3。

那么结合昨天说的内容实现:创建一个文件打开对话框可以选择jpg,png,bmp图片,并保存改文件所在路径下所有以jpg,png,bmp为拓展名的图片,并保存照片的张数:(代码如下,其中warning off 可忽略)

916cf7771388de95197d9c3ee7143891.png

------------------------------------------------------------------------------------------------------------------------

下面讲一下如何批量重命名某文件夹下的所有文件

先说一下我是如何碰到这个问题的,前天我在做简历时发现记不清以前用遗传算法做的一个东西是要优化啥了,然后我打开代码运行下发现报错了

d6f0f32199f9131affa08586bbd287ea.png,说是因为找不到函数文件。我用的是谢菲尔德大学的遗传算法工具箱,才下载下来时里面的所有代码的拓展名是:.M。而MATLAB是区分大小写的,正确的m文件的拓展名应该是:.m。一个工具箱里面好多函数的啊,怎么办?手动修改?不仅能累死你还能把你眼睛瞅瞎

d6f0f32199f9131affa08586bbd287ea.png。那么下面开始说正事:

首先MATLAB中没有重命名的函数,但是windows操作系统里有一个叫rename的函数它可以重命名file。那么如何在MATLAB中执行操作系统的命令呢:很简单,在所要执行的命令前加一个感叹号(英文输入状态下的感叹号哦)就行。

用法:!rename,OldName,NewName

开始时文件夹下的部分文件:

65265441de1fb1a4d54d7e6edc455309.png

运行代码的一秒钟后

6a309589bfb353b7ce0af98f1d7bb367.png

代码就几行,下面解释一下:

081c96f69aeb4dd67a0f0b3b60df31ea.png

这个好理解吧,先是执行dir获取以 .M为拓展名的所有文件,dir返回的是一个具有5个字段的结构体,第一个字段是name,然后直接进行struct2cell返回的是一个具有5行的细胞数组,我们只需要第一行的内容(第一行是name的值)。所以接着执行:

85ca282d170e5e939941ff1c71882afa.png

好了现在所有要改的文件名都搞出来了。接下来就是遍历files中的元素了

c6689253cc641c025891f8319a0b9db3.png

由于代码很短,就直接在命令行中执行了。

先获得第 i 个name然后执行eval这句,这句是用来重命名的。下面来解释一下eval这行:

eval是用来执行一个字符串的函数,举个例子:3+5 就等价于eval('3+5'),那么这里的这句就等价与 !rename,file,file(1:end-1).m。但是直接这样做是不行的,是因为!rename 后面每个逗号之间都被看成是字符串,而路径下没有名为''file''也没有名为 ''file(1:end-1).m''的文件,所以这样不行。

而使用

b72a34825c34f4bbd75651d6f37e029f.png是通过中括号把这些字符横向拼接在一块,file不是字符'file'了而是file所对应的具体的文件名。file(1:end-1)是获得去掉后缀M后的字符串。

如果单个执行的话应这样:

5c64aec3711d3806d32f8fcc79b91d3e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值