加速表查找/插值

5视图(30天)
Jurrien Plijter
Jurrien Plijter 2021年8月1日
编辑: dpb 2021年8月3日
嗨,AI q学习我需要插入一个发现状态表的状态来确定下一个行动。
states_list是Nx4矩阵(N是为了1 e6),状态1 x4数组。我需要找的行(state_index) state_list最近的状态。下面的函数,但远慢我的目标。
建议来改善这个函数的性能吗?
函数state_index = interpolate_states (states_list状态)
错误= abs (states_list(: 1)状态(1)+ abs (states_list(:, 2)状态(2))+ abs (states_list(:, 3)状态(3))+ abs (states_list(:, 4)状态(4));
[~,state_index] = min(错误);
结束
1评论
darova
darova 2021年8月1日
它不能更快。你已经用最快的方法

登录置评。

答案(1)

dpb
dpb 2021年8月1日
编辑:dpb 2021年8月1日
轻微的改变;没有试着时间…
(~,ix) = min (sum (abs (states_list-state), 2));
是相同的计算…
> > x =兰迪(10、4);y = 1:4;%一些测试数据
> > e = 0;我= 1:4,e = e + abs (x(:,我)- y (i));结束%模拟当前解决方案
> > >所有(e = = sum (abs (x - y), 2))%比较向量解决方案
ans =
逻辑
1
> >
我不认为这将使执行速度明显不同,我从来没有测试它是否很重要,但你可以考虑调整行而不是列的数据,因此4 x N和4 x1;这将让 总和 在自然秩序的工作列移除可选的第二个参数。
另一个轻微的减少开销可能是写上面的内联函数调用一个一行程序……
2的评论
dpb
dpb 2021年8月3日
编辑:dpb 2021年8月3日
替代(s)你测试了吗?内存定位解决人会变成线性序列顺序而不是跳过虽然因为在编译后的代码可能不会产生很多影响。谁知道呢,JIT可能足够聪明的转置在内部,无论如何。

登录置评。

标签

s manbetx 845


释放

R2018b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!