我有以下单元格数组:
MyArray = {'12345'; '67890'; '12345'}
我想创建两个新的单元格数组,其中包含上述数组的“拆分”版本。特别是,我希望一个单元格数组(MyArray2
)包含每个元素的前3个字符,第二个单元格数组(MyArray3
)包含每个元素的最后2个字符:
MyArray2 = {'123'; '678'; '123'}
MyArray3 = {'45'; '90'; '45'}
是否存在某种“反向”strcat
功能?
答案 0 :(得分:1)
这取决于你想要如何分割它。对于您的情况(在使用方括号编辑之前),这很容易:
A = ['12345'; '67890'; '12345']
B = A(:,1:3)
C = A(:,4:end)
对于更复杂的情况,请查看strsplit
(一个非常新的功能,否则可在文件交换中使用)
实际上你提到你有一个单元格数组,如果你的字符串有不同的长度,那就有点棘手了。请查看cellfun
documentation。
days = {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'};
abbrev = cellfun(@(x) x(1:3), days, 'UniformOutput', false)
语法@(x)创建一个匿名函数。此代码返回
abbrev =
'Mon' 'Tue' 'Wed' 'Thu' 'Fri'
因此:
A = {'12345'; '67890'; '12345'}
B = cellfun(@(x) x(1:3), A, 'UniformOutput', false)
C = cellfun(@(x) x(4:5), A, 'UniformOutput', false)
B =
'123'
'678'
'123'
C =
'45'
'90'
'45'
答案 1 :(得分:0)
这个怎么样?
sol = mat2cell(cell2mat(MyArray),ones(1,numel(MyArray)),[3 2]);
您想要的结果是sol(:,1)
和sol(:,2)
:
>> sol(:,1)
ans =
'123'
'678'
'123'
>> sol(:,2)
ans =
'45'
'90'
'45'