2016-02-01 30 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')