如何在 matlab 中将不同的字符串组合在一个单元格数组下?
How to combine a different strings under one single cell array in matlab?
我在不同的单元格(主要是字符串)中有数据,我想将一些数据放在一个单元格中,并保持其余数据不变。
例如:
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'};
数字之间必须用 space 分隔。
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'
使用 strjoin 方法。
strjoin(A(1,1:3))
returns '1 2 3'
//自动有spaces.
此 MATLAB 方法默认使用 space 分隔符。然而....
如果您需要额外的分隔符,请使用此
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
这就是我将如何做你上面想要的。
在 16b 中使用 string 和 join 比使用 strjoin 更容易一些,因为 join 使用矩阵的维数。
>> 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"
以防万一这里有人在 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()
的辩护:)
我在不同的单元格(主要是字符串)中有数据,我想将一些数据放在一个单元格中,并保持其余数据不变。
例如:
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'};
数字之间必须用 space 分隔。
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'
使用 strjoin 方法。
strjoin(A(1,1:3))
returns '1 2 3'
//自动有spaces.
此 MATLAB 方法默认使用 space 分隔符。然而.... 如果您需要额外的分隔符,请使用此
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
这就是我将如何做你上面想要的。
在 16b 中使用 string 和 join 比使用 strjoin 更容易一些,因为 join 使用矩阵的维数。
>> 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"
以防万一这里有人在 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()
的辩护:)