如何在matlab中的单个单元格数组下组合不同的字符串?

时间:2016-10-27 08:40:27

标签: string matlab cell-array

我在不同的单元格(主要是字符串)中有数据,我想将一些数据放在一个单元格中,并保留其余的数据。

例如:

A = {'1' '2' '3' '4' '5'; '6' '7' '8' '9' '10'; '11' '12' '13' '14' '15'};

所需的输出应为:

B = {'1' '2' '3 4 5'; '6' '7' '8 9 10'; '11' '12' '13 14 15'};

数字必须用空格分隔。

4 个答案:

答案 0 :(得分:1)

在16b中使用字符串和连接比使用strjoin更容易,因为连接使用矩阵的维数。

>> A = string({'1' '2' '3' '4' '5'; '6' '7' '8' '9' '10'; '11' '12' '13' '14' '15'});
>> [A(:,1:2) join(A(:,3:end),2)]

ans = 

  3×3 string array

    "1"     "2"     "3 4 5"   
    "6"     "7"     "8 9 10"  
    "11"    "12"    "13 14 15"

答案 1 :(得分:0)

c{1} = 'a'
c{2} = 'b'
c{3} = 'c'
>> c{2} = 'b'
c = 
  'a'    'b'    'c'
>> {char(c)'}
ans = 
    'abc'
>> {strjoin(c, ' ')}
ans = 
    'a b c'

答案 2 :(得分:0)

使用strjoin方法。

strjoin(A(1,1:3))
returns '1 2 3' 

//自动拥有空格。

此MATLAB方法默认为空间分隔符。然而.... 如果您需要额外的分隔符,请使用此

strjoin(A(1,1:3),'*')
returns '1*2*3'


B = A(:,1:2);
  for count = 1:size(A)
     B(count,3)=cellstr(strjoin(A(count,3:5)));
  end

这就是我在上面做你想做的事情。

答案 3 :(得分:0)

以防任何人在R2013a(没有strjoin())或R2013b(没有join())之前有MATLAB:

% The original
A = { '1'  '2'  '3'  '4'  '5'
      '6'  '7'  '8'  '9' '10'
     '11' '12' '13' '14' '15'};

% The new
B = A;
B(:,3) = strcat(arrayfun(@(ii) sprintf('%s ', B{ii,3:end-1}), 1:size(B,1), 'UniformOutput', false)', ...
                B(:,end));
B(:,4:end) = []

这非常难看,只能作为strjoin() :)的辩护