How to concatenate string vectors of unequal length?
15 views (last 30 days)
Show older comments
If I have thee vectors v1 = {'a' 'b' 'c'}', v2 = {'d'}' and v3 = {'e' 'f'}', how do I create a four vector v4 =
'a' 'd' 'e'
'b' '' 'f'
'c' '' ''
?
1 Comment
Accepted Answer
Image Analyst
on 20 Dec 2014
Try this:
% Define component cell arrays.
v1 = {'a'; 'b'; 'c'}
v2 = {'d'}
v3 = {'e'; 'f'}
% Find out how big cell array needs to be.
lv1 = length(v1);
lv2 = length(v2);
lv3 = length(v3);
rows = max([lv1,lv2,lv3])
% Instatiate cell array of the max size.
v4 = cell(rows, 3)
% stuff each column in.
v4(1:lv1, 1) = v1;
v4(1:lv2, 2) = v2;
v4(1:lv3, 3) = v3;
% Print out results
fprintf('\n\nHere is the output cell array:\n');
v4
In the command window:
Here is the output cell array:
v4 =
'a' 'd' 'e'
'b' [] 'f'
'c' [] []
More Answers (3)
Azzi Abdelmalek
on 20 Dec 2014
v1 = {'a' 'b' 'c'}',
v2 = {'d'}'
v3 = {'e' 'f'}'
v=cell(3,3)
v(:,:)={' '}
v(1:3,1)=v1
v(1,2)=v2
v(1:2,3)=v3
0 Comments
Thorsten
on 20 Dec 2014
v1 = {'a' 'b' 'c'}';
v2 = {'d'}';
v3 = {'e' 'f'}';
m = max([numel(v1) numel(v2) numel(v3)]);
if numel(v1) < m, v1{m} = []; end
if numel(v2) < m, v2{m} = []; end
if numel(v3) < m, v3{m} = []; end
M = [v1 v2' v3]';
X = M(:);
0 Comments
Shoaibur Rahman
on 20 Dec 2014
Edited: Shoaibur Rahman
on 20 Dec 2014
v1 = {'a' 'b' 'c'}';
v2 = {'d'}';
v3 = {'e' 'f'}';
Lv1 = length(v1); Lv2 = length(v2); Lv3 = length(v3);
n = max([Lv1 Lv2 Lv3]);
v1cell = [v1; cell(n-Lv1,1)];
v2cell = [v2; cell(n-Lv2,1)];
v3cell = [v3; cell(n-Lv3,1)];
v4 = [v1cell v2cell v3cell];
0 Comments
See Also
Categories
Find more on Cell Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!