我有一个字符串的单元格数组(长度= 4):
A = {'a', 'b', 'c', 'd'}
我有一个双矩阵索引(长度= 4):
B = [2, 4, 6, 8]
如何创建C
({1}}的新单元格数组length = 8
,使用B
中的索引将A
中的字符串放入新的C
数组B
。对于' '
中未指定的任何索引,我想输入C = {' ', 'a', ' ', 'b', ' ', 'c', ' ', 'd'}
空格(空字符串)。注意:我的真实数据并不是“每隔一个人”。
{{1}}
如何在Matlab中完成?
答案 0 :(得分:2)
这是另一种方法,与上述方法非常相似,但没有repmat
。
C(B)=A;
C(cellfun('isempty',C))={' '};
我已取代传统的@isempty
,因为它可能是faster。感谢@LuisMendo在评论中提到这一点。
答案 1 :(得分:1)
一种可能的方法:
C = repmat({' '}, 1, max(B)); %// predefine with ' ';
C(B) = A; %// replace actual values
或者:
C(B) = A; %// this automatically fills missing values with []
ind = cellfun('isempty', C); %// find occurrences of []
C(ind) = repmat({' '}, 1, sum(ind)); %// replace them with ' '
最后一行可以简化如下(不需要repmat
),如@ ParagS.Chandakkar所述:
C(ind) = {' '}; %// replace them with ' '