我的代码部分显示警告。请帮忙
g=[]; % declare an array for the output
for l=1:length(tx_databits) % map each bit into a baseband symbol
current_bit=tx_databits(l);
if current_bit==1
output_pulse= 1; % if bit=1 use the symbol for binary 1
else
output_pulse= 0; % if bit=0 use the symbol for binary 0
end
g =[g output_pulse]; % append this symbol to the output signal
end
答案 0 :(得分:1)
在第一行中,您声明了一个变量g
,但编译器(或者在您的情况下,Matlab解释器)并不知道它所需的长度,因此它被初始化为长度为0的数组。
每次迭代时,必须扩展g
才能保存新元素。这意味着在后台隐式执行多个任务:分配一个新的足够大的内存点,复制操作和旧分配的内存释放,这会带来相当大的开销。
最简单的解决方案是在循环之前预先分配内存:
g = zeros(1,length(tx_databits));
您可以使用迭代索引l
将output_pulse写入适当的位置,具体取决于您的应用程序:
g(l)=output_pulse