预分配数组以进行字符串连接

时间:2016-02-01 20:26:27

标签: arrays string matlab

假设我有一个数组x的整数(0或1)并且我想构建一个字符串s,以便A x(i)=0 B {1}} x(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)的字符分配给&#39; A&#39;。< / p>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

有预先分配zeros ones或类似内容的特殊功能,但您可以使用repmat预先分配所需的任何类型

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

除此之外,您根本不需要循环来实现此目的。简单的解决方案:

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

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

s=char(x+'A')