MATLAB: Merge row and column headers into column header or Get Index Names

column headerindexindexingrow header

Hi
This might be an easy qn sorry. So for simple example i have two headers. One 4×1 row header and one 1×4 column header as such
monkey rabbit tiger snail
monkey
rabbit
tiger
snail
What i want to achieve is 16 combination with the word vs in the middle. This will be the final column header. So output will be:
monkey vs monkey monkey vs rabbit monkey vs tiger monkey vs snail rabbit vs monkey ............ snail vs tiger snail vs snail
Is there a way to quickly get the names of an index ie monkey vs monkey =1,1 snail vs snail 16 x 16. Thank you for any help.
col = {'monkey', 'rabbit', 'tiger', 'snail'};
row = {'monkey', 'rabbit', 'tiger', 'snail'}';
Kevin

Best Answer

col = {'monkey', 'rabbit', 'tiger', 'snail'};
row = {'monkey', 'rabbit', 'tiger', 'snail'}; % can differ from col
Result = cell(numel(col), numel(row));
for c = 1:numel(col)
for r = 1:numel(r)
Result{c, r} = [col{c}, ' vs ', row{r}];
end
end
Or without a loop:
nCol = numel(col);
nRow = numel(row);
Result = strcat(repmat(col(:), 1, nRow), {' vs '}, repmat(row, nCol, 1));