如何在一个 .csv 文件中保存多个 Cell 数组值
how to save multiple Cell array values in one .csv file
我一直致力于制作一个包含图像及其预设值和其他重要参数的数据库。但不幸的是,我无法将 10
图像的初始数据保存在一个 .csv
文件中。通过创建 .csv
文件但保存最后一个值并覆盖所有以前的值,我已经使代码运行良好。我还给出了一次修改,即使用 sprintf
在代码中注释,但它为每次迭代分别创建 .csv
文件。但我想制作一个 .csv
文件,其中包含 7
列以及所有相应的值。
我的代码在下面,附上我的代码输出 Output。
请有人指导我如何制作具有 10
值的单个 .csv
文件(例如,在最终数据库中可以增加到数百个)以保存在 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
试试 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
我一直致力于制作一个包含图像及其预设值和其他重要参数的数据库。但不幸的是,我无法将 10
图像的初始数据保存在一个 .csv
文件中。通过创建 .csv
文件但保存最后一个值并覆盖所有以前的值,我已经使代码运行良好。我还给出了一次修改,即使用 sprintf
在代码中注释,但它为每次迭代分别创建 .csv
文件。但我想制作一个 .csv
文件,其中包含 7
列以及所有相应的值。
我的代码在下面,附上我的代码输出 Output。
请有人指导我如何制作具有 10
值的单个 .csv
文件(例如,在最终数据库中可以增加到数百个)以保存在 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
试试 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