2016-02-01 28 views
1

说我有一个整数数组x(0或1),并且我想建立一个字符串s使得我追加Ax(i)=0如果和如果Bx(i)=1正如我遍历x。例如,我可以做预分配阵列,用于字符串连接

s = ''; 
for i = 1:length(x) 
    if x(i) == 0 
      s = [s 'A']; 
    elseif x(i) == 1 
      s = [s 'B']; 
    end 
end 

虽然这个工程,MATLAB抱怨数组没有预先分配。我怎么能这样做?我不能例如做

s = zeros(1,length(x)) 

因为则S是作为一个数值数组进行处理,并且如果,例如,我做s(i)='A',我只分配给s(i)“A”的字符calue。

任何帮助将不胜感激!

回答

2

有特殊功能prealocate zerosones或相似的,但你可以预先分配你想用repmat

s=repmat('_',size(x)) 

除此之外任何类型的,你不需要一个循环都实现这一目标。简单的解决方案:

s=repmat('_',size(x)); 
s(x==0)='A'; 
s(x==1)='B'; 

正如您已经注意到数字和字符之间的转换,还有一个1行的实现。

s=char(x+'A')