假设我有一个数组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>
非常感谢任何帮助!
答案 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')