2014-03-25 41 views
0

我檢索圖片的文件名的數組爲:轉換字符數組單個元素Matlab的

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

現在我需要保存的圖像文件名的文件,但首先我需要連接所有的在一個單一的矩陣圖像名,

M = [M, s] 

然而,由於s是一個字符陣列,文件名的所有字符都將被視爲單獨的列,其中,因爲我需要治療的單個文件名作爲以M單個實體。

有什麼解決辦法嗎?

+0

試試這可能 - '{image_files.name}'。它會產生一個單元陣列,如果你沒有問題的話。 – Divakar

+0

@Divakar然後我不會能夠使用dlmwrite()函數將此矩陣M寫入文本文件.... 有沒有其他方法可以將M寫入文本文件,即使它包含單元數組元素.. .. 謝謝 – Zohaib

+1

''dlmwrite'不支持字符串,只有數字數據(它顯然_happens_與'char'數組一起工作的事實是一個未記錄的特性) - 你會好得多[使用單元陣列字符串](http://www.mathworks.co.uk/help/matlab/import_export/write-to-delimited-data-files.html#zmw57dd0e3630)。 – Notlikethat

回答

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:如果您仍然需要的文件名稱的字符矩陣或字符數組,從以下三個輸出中的一個選擇 -

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可用。

+0

嗨Divakar,這似乎是一個很好的解決方案,但不適用於我的情況,謝謝... – Zohaib

+0

@Zohaib嘗試編輯1. – Divakar

+1

只需使用'filesep'(或'fullfile')來構建平臺無關的路徑,而不是令人討厭的if-else設置。 – Notlikethat

相關問題