考虑预先分配速度

kl.*_*kl. 6 matlab memory-management

我正在做以下事情

for i = 1:m,
    index = 0;
    for j = 1:n,
        index = index+values(i,j)*2^(j-1);
        if (j==1)
            symbol_chip = chip_values(index+1,:);
        else
            symbol_chip = [symbol_chip chip_values(index+1,:)];
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

它告诉我以下内容:

symbol_chip可能会在循环中成长.考虑预先分配速度.

有任何想法吗?

Pet*_*ter 10

是.每次你四处走动,你的elseif块都在调整大小symbol_chip,这很昂贵.相反,重写你的代码,以便你symbol_chip = zeros(max_size, 1);在循环之前(比如说).然后,更改内容但不更改大小symbol_chip.

你需要稍微改变你的方法,但是如果你这样做会更快.如果您对目前的速度不感到烦恼,请不要改变任何东西!