我无法理解欧几里德距离变换函数在Scipy中是如何工作的.据我所知,它与Matlab函数(bwdist)不同.作为一个例子,输入:
[[ 0. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 1. 0.]
[ 0. 0. 0. 0. 0.]]
Run Code Online (Sandbox Code Playgroud)
scipy.ndimage.distance_transform_edt函数返回相同的数组:
[[ 0. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 1. 0.]
[ 0. 0. 0. 0. 0.]]
Run Code Online (Sandbox Code Playgroud)
但matlab函数返回:
1.4142 1.0000 1.4142 2.2361 3.1623
1.0000 0 1.0000 2.0000 2.2361
1.4142 1.0000 1.4142 1.0000 1.4142
2.2361 …Run Code Online (Sandbox Code Playgroud) 编辑:我已经提到了这个链接,我能够理解 InvokeLater 的代码流。我的问题是,为什么这种逻辑以这种方式实现?有什么具体原因吗?
以下是我的代码:
private void init()
{
JFrame jfr = new JFrame();
jfr.setSize(500, 500);
jfr.setVisible(true);
jfr.setTitle("Test");
JButton jb = new JButton("Ok");
jfr.add(jb);
jb.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
try
{
SwingUtilities.invokeAndWait(new Runnable()
{
@Override
public void run()
{
System.out.println("hello");
}
});
}
catch (Exception e1)
{
e1.printStackTrace();
}
}
});
Run Code Online (Sandbox Code Playgroud)
第一个问题(使用时InvokeAndWait):
为什么它以这样一种方式实现,即InvocationTargetException在 EDT 线程中调用时会抛出一个?
第二个问题(使用时InvokeLater):
为什么 InvokeLater 允许这样做?
好吧,这是我对 EDT 线程的基本理解:
调用和等待:
我在Java库中使用API,它从事件派发线程调用,并要求我返回一个完全初始化的UI组件.它看起来像这样:
public JDialog createDialog();
Run Code Online (Sandbox Code Playgroud)
但是我只能在从数据库加载后填充对话框,有时可能需要10秒.通常我会在后台线程中执行此操作,但由于此方法是从EDT调用的,因为我必须返回对话框,这将无效.这是第三方库,所以我无法改变方法,但有什么办法可以避免阻止EDT吗?
我是javascript的新手,所以这可能是一个非常简单的问题.在使用toLocaleString返回的日期之后,是否有一种简单的方法可以阻止'EDT'打印?谢谢!
我遇到了TreeSet(sortedNodes)和ArrayList(nodes)的奇怪问题.在我的程序中,我有一个从Event Dispatch Thread(from ActionListener)这些行调用的方法:
System.out.println("nodes: "+nodes.size());
sortedNodes.addAll(nodes);
System.out.println("sortedNodes: "+sortedNodes.size());
Run Code Online (Sandbox Code Playgroud)
问题是,在某些集合上sortedNodes.size()返回的数字低于nodes.size()(在这3行上,因此内容没有变化nodes).当我打印内容时sortedNodes,除了不包含它应该包含的所有对象之外,它甚至没有排序.奇怪的是 - 如果我再次调用整个方法,它就解决了这个问题.我没有得到它 - 在相同的集合上执行相同的代码,但第一次它不起作用,第二次它没有.有任何想法吗?
编辑:如果我的问题不是很清楚,这应该有所帮助
exportTree();
exportTree();
Run Code Online (Sandbox Code Playgroud)
pritns on output this:
nodes: 7
sortedNodes: 4
b2[23,57]a[46,97]b[65,77]c[43,43]
nodes: 7
sortedNodes: 7
a[46,97]b[65,77]b1[55,89]b2[23,57]b3[20,20]c[43,43]c1[99,88]
Run Code Online (Sandbox Code Playgroud)
比较:
public class NodeComparator implements Comparator<Node>{
public int compare(Node o1, Node o2) {
return o1.getLabel().compareTo(o2.getLabel());
}
}
Run Code Online (Sandbox Code Playgroud)
节点:
public class Node {
private int order;
private String label;
private Integer[] keys;
private Node[] pointers;
private Node …Run Code Online (Sandbox Code Playgroud) edt ×5
java ×3
swing ×2
collections ×1
concurrency ×1
date ×1
formatting ×1
javascript ×1
matlab ×1
python ×1
scipy ×1
swingworker ×1