String 在单元格数组中所有字符串的每个字符之间放置一个字符
我有String 在单元格数组中所有字符串的每个字符之间放置一个字符,string,matlab,cell-array,String,Matlab,Cell Array,我有输入单元格={'ABCD','ABD','BCD'}。如何将运算符inputcell={'ABCD','ABD','BCD'};%%/初始单元 outputcell=单元格(大小(inputcell));%//初始化输出 对于ii=1:numel(输入单元) tmp=inputcell{ii};%//抓住第二个牢房 tmp2=[];%//初始化空收集器 tmp2(1:2:numel(tmp)*2)=tmp;%//将字符放在奇数索引上 tmp2(tmp2==0)='这里有另一种方法。您可以使用
输入单元格={'ABCD','ABD','BCD'}
。如何将运算符inputcell={'ABCD','ABD','BCD'};%%/初始单元
outputcell=单元格(大小(inputcell));%//初始化输出
对于ii=1:numel(输入单元)
tmp=inputcell{ii};%//抓住第二个牢房
tmp2=[];%//初始化空收集器
tmp2(1:2:numel(tmp)*2)=tmp;%//将字符放在奇数索引上
tmp2(tmp2==0)='这里有另一种方法。您可以使用/p将所需的
>输出单元
输出单元=
'A插入固定字符(基本上是正确的方法。您可以使用tmp2=[];tmp2(1:2:numel(tmp)*2)=tmp;tmp2(tmp2==0)删除内部循环='Thank@Daniel将其添加到循环中。是否有任何方法可以消除外部循环,例如cellfun
或其他?可能是可能的,但cellfun
不会加快代码速度,因此我看不到任何优势。该死,我也在研究正则表达式解决方案,但你的速度更快!这是正确的方法。@thewaywewalk谢谢!
output-cell = {'A<B<C<D', 'A<B<D', 'B<C<D'}
inputcell = {'ABCD', 'ABD', 'BCD'}; %// Initial cell
outputcell = cell(size(inputcell)); %// Initialise output
for ii = 1:numel(inputcell)
tmp = inputcell{ii}; %// grab the iith cell
tmp2=[]; %// Initialise empty collector
tmp2(1:2:numel(tmp)*2)=tmp; %// Put characters on odd indices
tmp2(tmp2==0)='<'; %// Fill the even indices with <
outputcell{ii} = tmp2(1:end-1); %// Store the new string
clear tmp2 %// Clear the temporary string
end
outputcell
outputcell =
'A<B<C<D' 'A<B<D' 'B<C<D'
t = strcat(input_cell{n}, repmat('<', 1, length(input_cell{n})-1));
output_cell{n}(1:2:length(t)) = t(1:ceil(length(t)/2));
output_cell{n}(2:2:length(t)) = t(1+ceil(length(t)/2):length(t));
input_cell = {'ABCD', 'ABD', 'BCD'};
output_cell = cell(size(input_cell));
for n = 1:length(output_cell)
t = strcat(input_cell{n}, repmat('<', 1, length(input_cell{n})-1));
output_cell{n}(1:2:length(t)) = t(1:ceil(length(t)/2));
output_cell{n}(2:2:length(t)) = t(1+ceil(length(t)/2):length(t));
end
>> output_cell
output_cell =
'A<B<C<D' 'A<B<D' 'B<C<D'
input_cell = {'ABCD', 'ABD', 'BCD'}; %// input cell array
c = '<'; %// character to be inserted
output_cell = regexprep(input_cell, '.(?=.)', ['$0' c]); %// output cell array
output_cell =
'A<B<C<D' 'A<B<D' 'B<C<D'