我的程序瓶颈在于对数组中所有数字计算符号,当数组大小非常大时。我展示了我尝试过的两种方法,两种方法都有类似的结果。我有16GB的RAM,而数组占用了约5GB的空间。问题是符号函数占用了大量的RAM +虚拟内存。是否有人知道减少内存需求并加速这个过程以将数组输入的符号放入数组输出的方法(见下文)?使用带有if或switch命令的for循环不会耗尽内存,但需要一个小时才能完成(时间太长)。
感谢您提前给予的任何建议。
size = 1e9; % size of large array (just an example, could be larger)
output = int8(zeros(size,1)-1); % preallocate to -1
input = single(rand(size,1)); % create random array between 0 and 1
scalar = single(0.5); % just a scalar number, set to 0.5 (midpoint) for example
% approach 1 (comment out when using approach 2)
output = int8(sign(input - scalar)); % this line of code uses a ton of RAM and virtual memory
% approach 2
output(input>scalar) = 1; % this line of code uses a ton of RAM and virtual memory
output(input==scalar) = 0; % this line of code uses a ton of RAM and virtual memory
感谢您提前给予的任何建议。