Matlab 每次保存到新文件

Matlab 每次保存到新文件,matlab,Matlab,之前,我编写了执行LBP的代码。我面临的问题是,我每次都需要将直方图中的数据保存到不同的文件中,而不是每次保存到相同的文件中。我该怎么做?需要一些指导。下面的代码是我为LBP编写的代码 %% LBP scale = 2.^[7 6 5; 0 -inf 4; 1 2 3]; for i=2:6:m-1 for j=2:6:n-1 for k=i:i+6 for l=j:j+6 J0=I2(i,j);

之前,我编写了执行LBP的代码。我面临的问题是,我每次都需要将直方图中的数据保存到不同的文件中,而不是每次保存到相同的文件中。我该怎么做?需要一些指导。下面的代码是我为LBP编写的代码

%% LBP
scale = 2.^[7 6 5; 0 -inf 4; 1 2 3]; 
for i=2:6:m-1
    for j=2:6:n-1
        for k=i:i+6
           for l=j:j+6
             J0=I2(i,j);
             I3(i-1,j-1)=I2(i-1,j-1)>J0;
             I3(i-1,j)=I2(i-1,j)>J0;
             I3(i-1,j+1)=I2(i-1,j+1)>J0; 
             I3(i,j+1)=I2(i,j+1)>J0;
             I3(i+1,j+1)=I2(i+1,j+1)>J0; 
             I3(i+1,j)=I2(i+1,j)>J0; 
             I3(i+1,j-1)=I2(i+1,j-1)>J0; 
             I3(i,j-1)=I2(i,j-1)>J0;
             LBP(i,j)=I3(i-1,j-1)*2^7+I3(i-1,j)*2^6+I3(i-1,j+1)*2^5+I3(i,j+1)*2^4+I3(i+1,j+1)*2^3+I3(i+1,j)*2^2+I3(i+1,j-1)*2^1+I3(i,j-1)*2^0;
           end
        end
        LBP=uint8(LBP);
        LBPv=reshape(LBP,1,size(LBP,1)*size(LBP,2));
        Hist=hist(LBPv,0:255);
        save('C:\Users\Lakshmen\Documents\MATLAB\HistInf','Hist');
    end
end

您可以创建一个计数器变量,每次调用SAVE函数时递增该变量。您可以使用此计数器通过附加它来生成文件名

BASE_DIR = 'C:\Users\Lakshmen\Documents\MATLAB';

counter = 1;
for i=..
    for j=...
        Hist = hist(..);

        fname = sprintf('HistInf%03d.mat', counter);
        save(fullfile(BASE_DIR,fname), 'Hist');
        counter = counter + 1;
    end
end

否则,您可以在每次迭代时使用数组保存值,然后在结束时将此变量保存到单个MAT文件中。

您可以创建一个计数器变量,每次调用save函数时递增该变量。您可以使用此计数器通过附加它来生成文件名

BASE_DIR = 'C:\Users\Lakshmen\Documents\MATLAB';

counter = 1;
for i=..
    for j=...
        Hist = hist(..);

        fname = sprintf('HistInf%03d.mat', counter);
        save(fullfile(BASE_DIR,fname), 'Hist');
        counter = counter + 1;
    end
end

否则,您只需在每次迭代时使用数组保存值,然后在结束时将此变量保存到单个MAT文件中。

生成唯一标识符的最佳方法如下:

fname=sprintf('myalgo%i.mat',sum(floor(1000*clock))
因此,文件的ID每毫秒更改一次

最好的
AL

产生唯一标识符的最佳方法如下:

fname=sprintf('myalgo%i.mat',sum(floor(1000*clock))
因此,文件的ID每毫秒更改一次

最好的
AL

如果目标是生成随机文件名(而不是file01、file02等中的序列),则应使用函数:
[~,fname]=fileparts(tempname)
如果目标是生成随机文件名(而不是file01、file02等中的序列),则应使用函数:
[~,fname]=fileparts(tempname)
2)如何将其保存到单元阵列?例如Hist1(计数器,1)=Hist?我只是在努力。。如果错误,请更正我…@cnnlakshmen:1)更正,SPRINTF将以字符串形式返回结果2)使用大括号访问单元格数组:
Hist1{counter}=hist(…)如果我想将其保存到矩阵中,那么我需要输入Hist1[counter]=hist(…);我说的对吗?@cnnlakshmen:HIST返回一个行向量:
Hist1(计数器:)=HIST(…)。我建议您花点时间通读文档中的用户指南。2)如何将其保存到cell array?例如Hist1(计数器,1)=Hist?我只是在努力。。如果错误,请更正我…@cnnlakshmen:1)更正,SPRINTF将以字符串形式返回结果2)使用大括号访问单元格数组:
Hist1{counter}=hist(…)如果我想将其保存到矩阵中,那么我需要输入Hist1[counter]=hist(…);我说的对吗?@cnnlakshmen:HIST返回一个行向量:
Hist1(计数器:)=HIST(…)。我建议您花些时间通读文档中的用户指南。