我檢索圖片的文件名的數組爲:轉換字符數組單個元素Matlab的
image_files = dir(strcat(dir_path, '\*' , img_extension));
s = image_files(j).name
現在我需要保存的圖像文件名的文件,但首先我需要連接所有的在一個單一的矩陣圖像名,
M = [M, s]
然而,由於s是一個字符陣列,文件名的所有字符都將被視爲單獨的列,其中,因爲我需要治療的單個文件名作爲以M單個實體。
有什麼解決辦法嗎?
我檢索圖片的文件名的數組爲:轉換字符數組單個元素Matlab的
image_files = dir(strcat(dir_path, '\*' , img_extension));
s = image_files(j).name
現在我需要保存的圖像文件名的文件,但首先我需要連接所有的在一個單一的矩陣圖像名,
M = [M, s]
然而,由於s是一個字符陣列,文件名的所有字符都將被視爲單獨的列,其中,因爲我需要治療的單個文件名作爲以M單個實體。
有什麼解決辦法嗎?
試試這個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:如果您仍然需要的文件名稱的字符矩陣或字符數組,從以下三個輸出中的一個選擇 -
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可用。
嗨Divakar,這似乎是一個很好的解決方案,但不適用於我的情況,謝謝... – Zohaib
@Zohaib嘗試編輯1. – Divakar
只需使用'filesep'(或'fullfile')來構建平臺無關的路徑,而不是令人討厭的if-else設置。 – Notlikethat
試試這可能 - '{image_files.name}'。它會產生一個單元陣列,如果你沒有問題的話。 – Divakar
@Divakar然後我不會能夠使用dlmwrite()函數將此矩陣M寫入文本文件.... 有沒有其他方法可以將M寫入文本文件,即使它包含單元數組元素.. .. 謝謝 – Zohaib
''dlmwrite'不支持字符串,只有數字數據(它顯然_happens_與'char'數組一起工作的事實是一個未記錄的特性) - 你會好得多[使用單元陣列字符串](http://www.mathworks.co.uk/help/matlab/import_export/write-to-delimited-data-files.html#zmw57dd0e3630)。 – Notlikethat