将char数组转换为单元素Matlab

时间:2014-03-25 08:01:31

标签: string matlab

我正在检索数组中图像的文件名:

image_files = dir(strcat(dir_path, '\*' , img_extension));
s = image_files(j).name

现在我需要在文件中保存图像文件的名称,但首先我需要在一个矩阵中连接所有图像名称,

M = [M, s]

但是,由于s是一个字符数组,所以文件名的所有字符都将被视为单独的列,因为我需要将单个文件名视为M中的单个实体。

有什么工作吗?

1 个答案:

答案 0 :(得分:1)

尝试使用工作目录中的PNG文件 -

%%// Parameters
img_extension = '.png';
dir_path = pwd;
textfile = 'myFile.csv';

image_files = dir(strcat(dir_path,filesep,'*',img_extension));
x = {image_files.name};

fid=fopen(textfile,'wt');
[rows,cols]=size(x);
for i=1:rows
    %fprintf(fid,'%s,',x{i,1:end-1}); %%// Use comma separated file names
    fprintf(fid,'%s\n',x{i,1:end-1}); %%// Use newline separated file names
    fprintf(fid,'%s\n',x{i,end});
end
fclose(fid);

编辑1:如果您仍需要char矩阵或文件名的char数组,请从以下三个输出中选择一个 -

x = {image_files.name};
char_matrix1 = char(x{:}) %%// Create a MxN char matrix
char_array1  = strjoin(x,',') %%// Create a Mx1 char matrix separated by commas between filenames
char_array2  = strjoin(x,' ') %%// Create a Mx1 char matrix separated by spaces between filenames

注意: strjoin在最近的MATLAB版本和MATLAB文件交换here中可用。