【发布时间】:2018-11-01 03:16:42
【问题描述】:
我正在 MATLAB 中对矩阵进行逐列逻辑索引。一个例子是:
tic
N = 5*10^6;
input = randi(100,N,12);
output = zeros(N,1);
d_sn2 = randi(25,N,12);
d_sd2 = randi(25,N,12);
LL1 = randi(8,N,12);
UL1 = randi([12,20],N,12);
LL2 = randi(8,N,12);
UL2 = randi([12,20],N,12);
for p = 1:N
temp = zeros(12,12);
for i = 1:12
I2 = (d_sn2(:,i)>LL1(p,i) & d_sn2(:,i)<UL1(p,i)) & (d_sd2(:,i)>LL2(p,i) & d_sd2(:,i)<UL2(p,i));
temp(i,:) = mean(input(I2,:));
end
output(p) = max(temp(:));
end
toc
我想知道我是否可以将此操作矢量化或加快速度?
【问题讨论】:
-
抱歉,这是个错误。计算后我确实使用了 I2。由于它的大小和涉及的数据,我没有在这里显示确切的代码。但这是问题的症结
-
@CrisLuengo:抱歉,我相应地编辑了代码。
-
我已经调整了您的代码,以便实际使用内部循环中计算的所有数据。我不确定这是否符合您的要求,但它给了我一些可以在答案中讨论的内容。
标签: arrays matlab matrix indexing