Matlab:如何使用特定索引处的字符串构建数组

时间:2014-10-31 00:56:01

标签: arrays matlab

我有一个字符串的单元格数组(长度= 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中完成?

2 个答案:

答案 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 ' '