Как сохранить несколько значений массива Cell в одном файле .csv - PullRequest
0 голосов
/ 26 октября 2018

Я работал над созданием базы данных, которая содержит изображения и их предустановленные значения и другие важные параметры.Но, к сожалению, я не могу сохранить исходные данные, скажем, 10 изображений в одном .csv файле.Я сделал код, который отлично работает с созданием файла .csv, но сохраняя последнее значение и перезаписывая все предыдущие значения.Я также дал один раз модифицированный комментарий в коде, используя sprintf, но он создает файл .csv для каждой итерации отдельно.Но я хочу сделать один .csv файл, содержащий столбец 7 со всеми соответствующими значениями.

Мой код находится ниже, и вывод моего кода прилагается Выход .Пожалуйста, кто-нибудь подскажет мне, как создать отдельный файл .csv со значениями 10, например (может быть увеличен до сотен в конечной базе данных) для сохранения в файле 1 .csv.

clc
clear all

myFolder = 'C:\Users\USER\Desktop\PixROIDirectory\PixelLabelData_1';
filePattern = fullfile(myFolder, '*.png'); % Change to whatever pattern you need
theFiles = dir(filePattern);

load('gTruthPIXDATA.mat','gTruth')
gTruth.LabelDefinitions;
for i=1:10
%gTruth.LabelData{i,1};

baseFileName = theFiles(i).name;
fullFileName = fullfile(myFolder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
imageArray = imread(fullFileName);
oUt = regionprops(imageArray,'BoundingBox');
Y = floor(oUt.BoundingBox);
X_axis = Y(1);
Y_axis = Y(2);
Width = Y(3);
Height = Y(4);

CLASS = gTruth.LabelDefinitions{1,1};
JPG = gTruth.DataSource.Source{i,1};
PNG = gTruth.LabelData{i,1};
OUTPUT = [JPG X_axis Y_axis Width Height CLASS PNG]

%     myFile = sprintf('value%d.csv',i);
%     csvwrite(myFile,OUTPUT);

end

1 Ответ

0 голосов
/ 26 октября 2018

Попробуйте fprintf (https://www.mathworks.com/help/matlab/ref/fprintf.html).

Вам нужно будет открыть свой выходной файл для записи, затем вы можете добавлять к нему строки через каждую итерацию

Простой пример:

A = [1:10];                   % made up a matrix of numbers
fid = fopen('test.csv','w');  % open a blank csv and set as writable
for i = 1:length(A)           % loop through the matrix
     fprintf(fid,'%i\n',A(i)); % print each integer, then a line break \n
end
fclose(fid);                   % close the file for writing
...