【发布时间】:2020-05-20 17:26:16
【问题描述】:
我正在运行一段 Matlab 代码,它需要将近 70 个小时,我确信有一种更有效的编写脚本的方法,但我不知道怎么做。 循环 1 次迭代需要 1 秒。问题当然是 length(i) 是 186144。
braindip = normrnd(0, 50, 186144,3);
nobrain = normrnd(0, 45, 25014656,3);
ok = 1;
alpha = 2;
h = waitbar(0,'Please wait...');
dip_away = nan(size(braindip));
for i = 1:size(braindip,1)
tic
h_norm = repmat(braindip(i,:), size(nobrain,1),1);
nn = sqrt(sum((h_norm - nobrain).^2,2));
if min(nn) > alpha
dip_away(ok,:) = braindip(i,:);
ok = ok+1;
end
toc
waitbar(i / size(braindip,1))
end
有人对优化这个循环有什么聪明的建议吗?非常感谢!
【问题讨论】:
-
刚刚意识到您正在寻找最近的点。
dsearchn可能比自己编码更快。
标签: matlab loops optimization