变量似乎在每次循环迭代中改变大小

时间:2017-06-10 06:47:27

标签: matlab

我的代码部分显示警告。请帮忙

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

1 个答案:

答案 0 :(得分:1)

在第一行中,您声明了一个变量g,但编译器(或者在您的情况下,Matlab解释器)并不知道它所需的长度,因此它被初始化为长度为0的数组。

每次迭代时,必须扩展g才能保存新元素。这意味着在后台隐式执行多个任务:分配一个新的足够大的内存点,复制操作和旧分配的内存释放,这会带来相当大的开销。

最简单的解决方案是在循环之前预先分配内存:

g = zeros(1,length(tx_databits)); 

您可以使用迭代索引l将output_pulse写入适当的位置,具体取决于您的应用程序:

g(l)=output_pulse