我正在运行一个优化算法,该算法涉及迭代~2k个变量,每个变量代表一个大小约为400x400x3的图像。在我的迭代中,我需要加载这些变量,更新它们,然后回到下一轮,这样的事情
% Initialize the global variable x
x = 0;
for iter=1:100
% Initialize var1 and var2 sum
var1_sum = 0;
var2_sum = 0;
% Save a copy of the global variable x for convergence checks
x_old = x;
for var_no=1:1225
% Load var1_i
load(['var1_', num2str(var_no), '.mat');
% Load var2_i
load(['var2_', num2str(var_no), '.mat');
% compute var1 sum and var2 sum
var1_sum = var1_sum + var1_i;
var2_sum = var2_sum + var2_i;
% Update var1_i, var2_i
var1_i = update_var1_using_x(var1_i, x);
var2_i = update_var2_using_x(var2_i, x);
% Save them again
save(['var1_', num2str(var_no), '.mat', var1_i, '-v7.3');
save(['var2_', num2str(var_no), '.mat', var2_i, '-v7.3');
end
% Update x now
x = x + var1_sum + var2_sum;
% check is x has been converged
delta_x = norm(x, 'fro') - norm(x_old, 'fro');
if(delta_x < 0.0001)
break;
end
end
正如可以预料的那样,我的代码非常耗时,而且大小和它们没有。非常大,我无法将它们保存在RAM中。有人可以帮助我,并建议我一个有效的方式来实现这一目标吗?它已经成为我运行时间的一个巨大瓶颈。非常感谢!