MATLAB 处理一些小问题~

文章目录

  • 替换
  • PR Plot
  • 计算txt文本的行数
  • 复制txt到指定文件夹
  • 解规划问题?
  • 删除图片

替换

批量对某一文件夹的txt文本进行查找字符,替换

path1='C:\Users\Ldating\Desktop\1\'; % 数据的地址
files1 = dir([path1])
[A] = {files1(:).name};
class_num1 = size(files1);

%% 修改内容 
check1='},{';
check2=']'; %要替换的两个字符
replace='\n';%替换为

%% 修改
for i=3:class_num1
    name1=strcat(path1,A(i));
    name1=name1{1};
    A(i)
    fid1=fopen(name1);
    while ~feof(fid1)
     r1=regexprep(fgetl(fid1),check1,replace);
     r2=regexprep(r1,check2,replace); 
    end
    fclose(fid1);
    newname=strcat('C:\Users\Ldating\Desktop\2\',A(i),'_处理后.txt'); % 数据保存地址
    newname1=newname{1};
    fid2=fopen(newname1,'w+');
    fprintf(fid2,char(r2))
    fclose(fid2);
end

PR Plot

通过计算与G truth,之间的成功率

path1='C:\Users\Ldating\Desktop\truth.txt';
path2='C:\Users\Ldating\Desktop\Ours.txt'
    fid1=fopen(path1);
    fid2=fopen(path2);
    
  for i=1:78969   %需要读取的行数
   %1
      a{i}=fgets(fid1);
    A=strsplit(a{i});
   A1=transpose(str2num(cell2mat(A(1))));
   A2=transpose(str2num(cell2mat(A(2))));
   A3=transpose(str2num(cell2mat(A(3))));
   A4=transpose(str2num(cell2mat(A(4))));
    center1_X=A1+A3/2;
    center1_Y=A2+A4/2;
  %2  
    b{i}=fgets(fid2);
    B=strsplit(b{i});
    B1=transpose(str2num(cell2mat(B(1))));
    B3=transpose(str2num(cell2mat(B(3))));
    B2=transpose(str2num(cell2mat(B(2))));
    B8=transpose(str2num(cell2mat(B(8))));
    center2_X=B1+(B3-B1)/2;
    center2_Y=B2+(B8-B2)/2;
    
    dis(i)=sqrt((center1_X-center2_X)^2+(center1_Y-center2_Y)^2);
  end

fclose(fid1);
fclose(fid2);

for k=1:50
    tru=0;
    fal=0;
 for i=1:78969
    if(dis(i)<=k)
        tru=tru+1;
    end
    PLOT(k)=tru/78969;
 end
end
 x=(1:50);
 plot(x,PLOT,'*-');

计算txt文本的行数

依次对比两个文件夹下的txt文本行数,

path1='C:\Users\Ldating\Desktop\bbox\';
path2='C:\Users\Ldating\Desktop\trj\'
files1 = dir([path1])
[A] = {files1(:).name};
class_num1 = size(files1);

files2 = dir([path2])
[B] = {files2(:).name};
class_num2 = size(files2);

for i=3:class_num1
    name1=strcat(path1,A(i));
    name2=strcat(path2,B(i));
    name1=name1{1};
    name2=name2{1};
    A(i)
    fid1=fopen(name1);
    fid2=fopen(name2);
 lines1=0;
 lines2=0;
    while ~feof(fid1)
    fgetl(fid1);
    lines1 = lines1 +1;
end
fclose(fid1);
lines1

    while ~feof(fid2)
    fgetl(fid2);
    lines2 = lines2 +1;
end
fclose(fid2);
lines2
end

复制txt到指定文件夹

依次进入每个文件夹,复制里面的指定内容,按文件夹的名字命名,统一存到指定目录

path='D:\数据集\红外数据集\红外数据集\RGBT234\1\';
files = dir([path])%找格式为tif的文件
%[path]
output='E:\MATLAB\R2016b\bin\modify_Name\';
[A] = {files(:).name};
class_num = size(files);
A;
for i=3:class_num
    s1=strcat(path,A(i),'\visible.txt');
    s11=s1{1};
    copyfile(s11,output);
    s2=strcat(output,'visible.txt');
    newname=strcat(A(i),'.txt');
    newname1=newname{1};
    eval(['!rename' 32 'visible.txt' 32 newname1]);
end

解规划问题?

f=[-3;-1];
a=[3 -2;-5 -4 ;2 1];
b=[3;-10;5];
lb=[0;0;0];
ub=[];
[x,favl]=linprog(f,a,b,[],[],lb,ub)

删除图片

dirs=dir('G:\3_Projects\l2变电站\934_1867\*.png'); 
% 用你需要的目录以及文件扩展名替换。读取某个目录的指定类型文件列表,返回结构数组。
dircell=struct2cell(dirs)' ;
% 结构体(struct)转换成元胞类型(cell),转置一下是让文件名按列排列。
filenames=dircell(:,1) %

dirs1=dir('G:\3_Projects\l2变电站\934_1867\*.xml'); 
% 用你需要的目录以及文件扩展名替换。读取某个目录的指定类型文件列表,返回结构数组。
dircell1=struct2cell(dirs1)' ;
% 结构体(struct)转换成元胞类型(cell),转置一下是让文件名按列排列。
filenames1=dircell1(:,1)%

fileFolder=fullfile('G:\3_Projects\l2变电站\934_1867\*.xml');
dirOutput=dir(fullfile(fileFolder,'*.xml'));
fileNames={dirOutput.name}';
fileNames

你可能感兴趣的:(笔记)