我正在努力在KDB中编写I = imread('343a.tif');
subplot(2,2,1);imshow(I);title('Original Image');
I = im2double (I);
H = fspecial('log', 11,1.5);
Laplacian = imfilter(I,H,'replicate');
subplot(2,2,2);imshow(Laplacian, []);title('Laplacian Image');
H = fspecial('sobel');
Edge = imfilter(I,H,'replicate');
subplot(2,2,4);imshow(Edge);title('Sobel Image');
函数; nprev
函数返回第n个元素,但我需要相对于当前元素的所有prev xprev
元素。
n
非常感谢任何帮助。
答案 0 :(得分:2)
通过重复应用prev
并翻转结果
q)n:3
q)select flip 1_prev\[n;s] from t
s
-----
" "
"a "
"ba "
"cba"
"dcb"
"edc"
..
如果n
比行数小得多,这将比一些更直接的解决方案更快。
答案 1 :(得分:1)
xprev
函数基本上如下所示:
xprev1:{y til[count y]-x} //readable xprev
我们可以调整它以获取所有n
元素
nprev:{y til[count y]-\:1+til x}
在查询中使用nprev
q)update np: nprev[3;s] , xp1:xprev1[3;s] , xp: xprev[3;s], p:prev[s] from t
i s np xp1 xp p
-------------------
1 a " "
2 b "a " a
3 c "ba " b
4 d "cba" a a c
5 e "dcb" b b d
6 f "edc" c c e
k相当于nprev
k)nprev:{$[0h>@y;'`rank;y(!#y)-\:1+!x]}
类似nnext
看起来像
k)nnext:{$[0h>@y;'`rank;y(!#y)+\:1+!x]}