HH.*_*HH. 3 optimization matlab
我有一个1乘N的双数组,由1和0组成.我想将所有1映射到符号'-3'和'3',所有0映射到符号'-1'和'1'.以下是我的代码.由于我的阵列约为800万,因此需要很长时间.如何加快速度?
[row,ll] = size(Data);
sym_zero = -1;
sym_one = -3;
for loop = 1 : row
if Data(loop,1) == 0
Data2(loop,1) = sym_zero;
if sym_zero == -1
sym_zero = 1;
else
sym_zero = -1;
end
else
Data2(loop,1) = sym_one;
if sym_one == -3
sym_zero = 3;
else
sym_zero = -3;
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是一个非常重要的 MATLAB优化技巧.
您的代码是一个简单的预分配快得多.只需添加
Data2 = zeros(size(Data));
for loop = 1: row
...
Run Code Online (Sandbox Code Playgroud)
for
循环之前.
在我的计算机上,预分配的代码终止,原始代码仍在运行.我删除了我原来的解决方案,因为你的这个优化非常快:).0.322s
此外,由于我们讨论的是MATLAB,因此处理列向量的速度更快.