当前位置:   article > 正文

自用-matlab复制文件到对应文件夹_matlab复制文件到指定文件夹

matlab复制文件到指定文件夹


这个代码主要解决的是构建5折交叉验证数据集,使之更自动,保护眼睛,保护脑细胞,自用为主。

1.需求

我现在有一个文件夹5折交叉验证数据集,太长了简称为a好了。。。里面有5个文件夹,image0,image1…每个文件夹下有8个类别 class1,class2,class3…需要把类别中的文件都复制到一个目标文件夹b,这个文件夹是这样的,有5个子文件夹,命名为01234,(就是第几折),每个文件夹下又分成2个子文件夹train,test,每个train文件夹下有8个类,就是a那边的8个类,

a和b的关系就是:
0的测试集(即test)就是image00的训练集(即train)就是image1,image2,image3,image4;
1的测试集(即test)就是image11的训练集(即train)就是image0,image2,image3,image4;
2的测试集(即test)就是image22的训练集(即train)就是image0,image1,image3,image4;
3的测试集(即test)就是image33的训练集(即train)就是image0,image1,image2,image4;
4的测试集(即test)就是image44的训练集(即train)就是image0,image1,image2,image3;

在这里插入图片描述

在这里插入图片描述
因为怕错,所以用手动的方法,结果当时花了40分钟,就是手动把每个类的东西全选然后复制1次,粘贴5次到不同的地方,我分神了,反正一共粘贴了200次。。。,于是搞好了很久之后,决定搞个代码,万一下次数据集更大怎么办,还是让电脑来吧

2.思路

2.1 复制的基础功能

先搞定简单的复制,参考这篇博客https://blog.csdn.net/YeziTong/article/details/84942629

sourcePath = '.\Square_train';  
targetPath = '.\Square_test';  
 
fileList = dir(sourcePath);  
  
for k = 3 :5: length(fileList)  
    movefile([sourcePath,'\',fileList(k).name],targetPath);
end 
 
%copyfile([sourcePath,'\',fileList(k).name],targetPath)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

我用到的是原博主注释掉的copyfile,(复制功能),for循环对我意义不大,因为实现的功能不一样,感谢博主染血白衣

2.2遍历源文件夹

然后实现对原始文件下a的文件遍历,受第一步的启发,其实就是不断地取出对应路径,再拼接起来,主要注意for循环的起点,对于如果读出来的内容是文件夹的话,从3开始,如果读出的内容全是文件的话,从1开始。

2.3 新建目的文件夹

构建新的文件夹b,(全空,没有文件),主要使用mkdir函数,class1,class2的名字我在2.遍历源文件夹a的时候自动获取了,感觉这样会比较方便,当然可能并不。。。

2.4 每个文件复制5次

把文件一个一个复制到文件夹b的对应位置中,其实就是再次遍历原始文件夹a,然后对里面的每个文件进行5次复制,根据它的具体情况,把它复制到不同的地方。

2.5 要多用fprintf来检查是不是有问题!

3.代码


                
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/543804
推荐阅读
相关标签
  

闽ICP备14008679号