2017-05-17 4 views
0

J'ai besoin d'un moyen de sauvegarder les données générées par des boucles. Pour expliquer simplement, je génère d'abord une matrice 5 * 10 dans la deuxième itération le processus répète et une autre matrice 5 * 10 est générée certaines lignes doivent être vides) (je veux dire dans la deuxième ligne d'itération3 est vide) et la deuxième matrice doit concaténer la première et faire une matrice 5 * 20.Il est possible dans excel.but mais j'ai besoin de la manière la plus rapide de sauvegarder des données? lequel de table/dataset/... peut être utilisé ????comment enregistrer les données générées via la boucle for matlab?

[data,header] = xlsread('E:\TEST\chozen_font_data.xlsx','font'); 
font_data = data(:,1); 
a = 'C:\Users\S.R.P\Desktop\ouput'; 
A = dir(fullfile(a)); 
isub = [A(:).isdir]; 
nameFolds = {A(isub).name}'; 
nameFolds(ismember(nameFolds,{'.','..'})) = []; 

for n_fol = 1:numel(nameFolds) 
    name_sub_fold = dir(fullfile(a,nameFolds{n_fol},'*.png')); 
    for n_sub = 1: numel(name_sub_fold) 
    [~,~,image] = 
    imread(fullfile(a,nameFolds{n_fol},name_sub_fold(n_sub).name)); 
    image=im2bw(image); 
    [ image ] = Crop_AroundAllComponent(image); 
    name_font = regexprep(name_sub_fold(n_sub).name,'[^0-9]',''); 
    co = find(font_data == str2num(name_font)); 
    area = area_calculation(image); 
    md = matrix_density_calculation(image); 
    [ num ] = DisconnectedComponent_calc(image); 
    d={area,md,num}; 
    [s,m] = xlswrite('E:\TEST\chozen_font_data.xlsx', d, 'font', 
    strcat('GB',num2str(co))); 
    end 
    end 

Répondre

0

concaténer 2 matrices dans Matlab, vous pouvez simplement utiliser la notation de concaténation de support carré. Comme si:

row1 = zeros(10, 5); % 10 by 5 row 
row2 = ones(10, 5); % another 10 by 5 row 
total = [row1; row2]; % 20 by 5 combination 

Si vous vouliez faire cela avec des boucles for, vous pourriez ajouter une nouvelle ligne à chaque itération. Par exemple:

start = 0; 
end = 5; 
result = []; 
for i = start:end 
    row = ...  % get the new row here 
    result = [result; row]; 
end 
+0

ce n'est pas ma réponse –