在MATLAB中将不同的单元arrays组合成一个

我正在尝试查找数组中的特定字符,并以相同的顺序将输出打印到Excel表格中(即,如果元素之间没有匹配则保留空白)。

我在循环中使用了下面的代码:

编辑:

[num,txt,~] = xlsread('protein-peptides.xls') for i=1:size(txt) str(i)=txt(i) expression='\w*Pyro-glu from E\w*'; matchStr(i)=regexp(str(i),expression,'match','once'); ArrayOfStrings=vertcat(matchStr{:}); end 

循环之后:

 xlswrite(filename,ArrayOfStrings,1); 

输出如下。

1)没有匹配的元素不显示为空白

2)匹配的每个单词显示在不同的单元格中。

 P yro - glufrom E P yro - glufrom E P yro - glufrom E P yro - glufrom E 

如何获得matrix中剩余的空格,并在输出中的单个单元格中包含整个匹配短语?

我尝试连接单元格,但是打印所有的输出在一行,但仍然在不同的单元格中的每个字符

我知道你可能会更喜欢使用xlswrite ,但我无法得到这个工作(至less在OS X上)。 如您所见xlswrite似乎会自动去除空单元格。 它似乎也正在将每个细胞分散在多个列上,这与我记忆中的行为有些奇怪和不同。 我不知道是否有最近更新(我使用R2015b)。

我能够使用简单的fprintf调用来编写一个可以在Excel中打开的CSV文件。 请注意终止字符( \ r )是至关重要的; 空白单元格似乎不被保存在Excel中,如果这被换行。 我也重构了一下你的代码。

 % Load data from Excel file [~, txt, ~] = xlsread('protein-peptides.xls'); % Perform analysis expression='\w*Pyro-glu from E\w*'; for i = 1:length(txt) matches(i, 1) = regexp(txt(i), expression, 'match', 'once'); end % Write data to CSV file fid = fopen('test.csv', 'w+'); for i = 1:length(matches) fprintf(fid, '%s\r', matches{i}); end fclose(fid); 

input文件行

  • 来自E的Pyro-Flu
  • testing
  • 来自E的Pyro-Flu
  • testing

输出文件行

  • 来自E的Pyro-glu
  • 来自E的Pyro-glu