如果你只需要一個字符向量「AACA」,您可以使用此:
a = {{'a'}, {'a'}, {'c'}, {'a'}};
a_CharVector = cellfun(@(x) char(x), a);
如果你想要的字符向量「AACA」,你可以使用regexprep
添加空格:
a_CharVectorWithSpaces = regexprep((cellfun(@(x) char(x), a)), '(.)', '$1 ');
要打印帶空格AACA和換行,你可以使用這個:
fprintf([ regexprep((cellfun(@(x) char(x), a)), '(.)', '$1 '), '\n' ]);
編輯:刪除不必要的匿名功能。在這種情況下,不需要@(x)
。
爲了得到特徵向量 'AACA' 這個作品:
a_CharVector = cellfun(@char, a);
而獲得特徵向量 'AACA' 您可以使用此:
a_CharVectorWithSpaces = regexprep((cellfun(@char, a)), '(.)', '$1 ');
要使用換行符。printf AACA:
fprintf([ regexprep((cellfun(@char, a)), '(.)', '$1 '), '\n' ]);
來源
2012-04-13 23:17:44
nrz
'@(x)'是構造匿名函數的語法。但是,在這種情況下,不需要,因爲'@ char'就足夠了。我編輯了我的答案,添加了不帶'@(x)'語法的解決方案。有關匿名函數的更多信息,可以查看[關於匿名函數的MATLAB文檔](http://www.mathworks.com/help/techdoc/matlab_prog/f4-70115.html)。在某些情況下,匿名函數對'cellfun'和'arrayfun'非常有用。 – nrz 2012-04-14 14:57:31
謝謝。 @nrz我坦率地說,使用Fprintf來保存文本文件,使用你現在的代碼:fileID = fopen('a.txt','at'); fprintf(fileID,'%2.8s \ n',cellfun(@(x)char(x),a)); FCLOSE(FILEID); – pac 2012-04-14 15:21:05
所以,當你將'@(x)'語法和'cellfun'一起使用時,'x'會逐個獲取單元格數組的所有值,所以首先''''''''''' x'又是'{'a'}',然後是'{'c'}'...在這種情況下,'char'應用於所有這些'x'獲取的值,從而創建它們的字符向量。 – nrz 2012-04-14 15:25:12