Swedish flagChinese (Simplified) flagEnglish flagGerman flagFrench flagSpanish flagHindi flag
七月
27
2010
2

找到一个最佳的多边形包围的随机复杂点-凸信封

介绍

今年夏天,我的工作在Västerås的技术部分。 我曾在同一家公司,并连续三个夏天在大致相同的办公室。 这项工作是非常技术性的,有趣和具有挑战性的。 在办公室与许多其他暑期工,我发现我有责任和共同任务与工作。 具体来说,我的工作,以简化计算,使用大多MATLAB GUI编程和Java的开发工具。 MATLAB的风格,使新的面向对象的代码比前几年更为清晰。

问题

有一天,我面临一个小的挑战。 简化它找到一个多边形包围了一套复杂点,散落在飞机集中。 起初,我没有发现的功能,在MATLAB,当然这是很奇怪的。 因此,我决定找到一个自定义的算法。 在这篇文章中,我将描述我的算法。

Konvext hölje

图1。 凸壳的例子。

我Alogritm

我描述了我的BE算法使用图2。 首先,我将解释在寻找住房困难。 事情是所有点​​都在无序结构。 如果点围绕一个中心点排列,可以使用它们的顺序和距离,从中心来解决这个问题。 然而,它需要至少为O(n日志(N)),以线性排序。 我的算法工作中的无序列表,甚至可能将更多的时间,因为我还没有得出任何证据。

这个想法肯定是开始,我在x方向的点,然后找到K值变成最高点。 即找出:

MAX(k_i)=(y_min - y_i)/(x_min - x_i的)I = [所有项目],这给你点P_2。

所有小于y值X_min点可能被忽略。 与x的值小于P_2所有点也可以排除进一步阅读。

K_2然后找到降到最低点发现:

K_1 - (y_1 - y_i)/(X_1 - x_i的)I = [所有点都不能排除]

同样发现k_a一般由:

分钟(k_a-1 - (y_a-1 - y_i)/(x_a-1 - x_i的))= [不排除所有的点]

计算多边形的上半部分,直到你得到的最高点,这是在x方向。 此后,同样的算法,多边形的下半部分。

Algoritm för konvext hölje

图2。 算法凸案件。

性能

该算法的性能取决于多少分,最终在多边形。 我使许多linjärsök的清单,它在多边形点。 这意味着,复杂度为O(N *搜索)。 在最佳的多边形数量的点是根据10和25之间的机会点。 因此算法是比较快的。

代码是不公开的。

MATLAB解决方案 - 凸壳

我的算法做同样的事情作为一个MATLAB函数convhull 凸包是一个封闭的多边形或凸体的英文单词。 另一种很好的资源是http://en.wikipedia.org/wiki/Convex_hull_algorithms解释说,理论的最短时间找到一个凸壳为O(n日志(N))。

七月
14
2009
2

Matlab图像大小调整的

我已经写了一个小程序,MATLAB,缩小图像。 这是因为我没有任何简单的方式找到该功能的地方。 它应该是相当大量的图片,在悉尼/澳大利亚的交换过程中,必须充电的一年。 我们必须对我们的访问限制,我们住的地方,你不能有5 MB的照片。 当我完成我的计划,现在看,我认为它很容易一次编辑Office程序中的许多图像格式。 总之,程序正常工作。

目的

该计划的目的只是减少一个文件夹中的所有图像的大小。

为什么呢?

因为它是繁琐的编辑和缩小每个图像分别时,许多图像是固定的。

什么是需要运行的程序?

它需要你有一个MATLAB运行许可证。 你是学生,我不会有任何问题,否则,不幸的是,可能不是免费的。

使用

所见即所得。

责任

我不采取任何的工作责任。


下载ImageResizer

大卫·古斯塔夫松撰写的: 编程 |标签: 调整大小的
六月
28
2009
2

MATLAB GUI与guihandles

在Matlab中,我曾与一个计算机程序。 这背后的想法是,它必须是用户友好和高效率的常见的计算做某些类型的设施。 在这个程序中,我已经使用了很多小部件uipanel,uitree和uicontrol。

matlab的GUI教程的许多作家建议使用Matlab的内建函数(或者我应该说是一个工具箱(?))被称为指南。 类型:

指南>>

在命令窗口中,它带来了一个窗口,在这里你可以找到和配置一个数字的组成部分。 这有单速的应用优势。 然而,大的问题,如果你想要写正版软件。 这是因为它是很难保持跟踪你的图形对象。 他们中包括结束出口的数字图

请将您的组件自己

我写我的程序,而无需使用指南。 这是很容易创建和部署组件。 正如你可以看到下面,需要一点点的命令很多的编码。 试想一下,像游戏如何健壮的代码扑克和其他应用那里是一个丰富多彩的活动。 无论如何,不使用指南编写程序。 这是通过设置在数字和窗口的位置创建的窗口句柄。 当然,其他如颜色或回调参数配置就像里面指南。 MATLAB对象一样,我已经写了我的程序,并用调用传递函数的构造组件外包的战略,暂命名为初始化GUI。 内部的结构,持有任何杠杆组件类我救我的对象。 这个结构我开始时,我躺在组件。

  classdef aClassName <手柄
   属性
       handleToGui;
   结束
   方法
      功能OBJ = aClassName(varargin)
          ...
          obj.initGui();
          ...
      结束
       ...
      图功能initGui(OBJ)
          = Obj.handleToGui.fig图(...);
          Obj.handleToGui.otherComponentName = ...
          ...
      结束
   结束
 %结束classdef 

MATLAB函数guihandles

Matlab具有称为guihandles功能。 它在许多方面是相当容易的,我会解释为什么。 原因是,你不必担心直接加入成一个结构组件,当你把他们因为guihandles(母公司),(儿童),图中的所有孩子提供了一个把手的结构。 在此之前,你可以启动后,所有的组件奠定了handleToGui。 这便成为一个领域艾姆斯的标记名称(标签)元件已获得结构。

用Matlab功能guihandles问题

但是,我认为MATLAB有没有想过这是一个风险。 另外,它是让我和其他人所使用的所有过于草率。 事实是,GUI句柄提供的所有部件在图的句柄。 如果你有不同类别,为您的应用程序的不同部分,如 一个单独的类,程序和其他类,做了类似的任务在另一个地方,他们可以摧毁对方,如果两者都使用guihandles的一部分,处理特定类型的plottyta。 在子guihandles允许手柄的主角(包括其他它的子组件)。 如果第二子具有相同的标签名称的任何组件,他们会感到困惑时组件调用它认为是什么组件。

不使用MATLAB函数guihandles的

我是面向对象编程的编程方法,为创造良好的结构。 这是通过允许每个对象(类)内部履行其任务,只有通过特定的接口与环境沟通。 全局变量guihandles提供了一个潜在的致命危险。 世界的概念的目的,换句话说,低耦合,高内聚和明确的模块。

大卫·古斯塔夫松撰写: 编程 |标签:
六月
24
2009
3

格式化谷歌的AdSense

我已经加入了谷歌的广告techonomics.se使业务利润。 然而,没有产生任何结果,但我们会看到。
现在的问题是如何管理广告在您的博客文章前三? 事实是,你作为一个AdSense用户只能有三个每个HTML页面的广告。 如果你有你的博客的头版上的几个项目,它可能是前三名的广告上运行的时间。
解决的办法是编辑您的文章列出的index.php(或类似)。 创建一个计数器, $counter = 1;在标记文件的开头: 当您将您的广告while循环增加的内容您的记录,并列出$counter = $counter +1 ; 做一个测试,以$counter <= 3张贴annonsscriptet。

下面是代码看起来更详细:

  <?腓
 get_header();
 $计数器= 1;
 ?> 
  ... 
  <?腓(have_posts()):而(have_posts()):the_post(); 
  ... 
  <div class=""storycontent"">
 <?腓
 ($计数器<= 3){
回声('
 <您的AdSense annons>
 ');
 }
计数器= 1 +计数器; 
  ?> 
  ... 

当然,做一个格式,例如: 用CSS,要解决一个良好的广告位置。 然后创建一个div与类广告有正确的格式和它周围放置广告。
别的东西,这是好事,是给每个职位的广告。 在我的主题被称为单后single.php。 你不必担心任何计数器,这是足以让一个广告!

撰写人大卫·古斯塔夫松,规划科技 |标签: WordPress的
六月
19
2009
2

编程MATLAB

我的暑期工作期间,我曾与一个matlab程序。 Matlab的力量在于它是一个非常简单的语言,这是一个更高的抽象层次比说,爪哇。 它必须补充说,语言是很简单的,当它来进行计算,求解微分方程,数值计数,模拟等。 处于劣势,从高层次的抽象,然而,在于它是相当缓慢的。 编码时你必须要非常谨慎。

MATLAB建立在Java的版本2008A。 你可以驾驶由MATLAB函数(也有同类型的其他功能)在Java中的大多数功能:

  javaMethodEDT(类或类的对象“,”methodName的',...,PARAMS) 

从Matlab的2008年版,您还可以创建类和对象,从而简化了创建非常结构。 从Java语法是很远,多是从以前的Matlab版本,最初有点尴尬继承。 我会在一系列的文章,介绍一些技巧和Matlab编程技巧。

  • 我将通过图形用户界面,在另一棵树的形式和控制。 这些功能都通过MATLAB uicontrol与uitree的,这是一个重写的Java组件,JTree和JButton的,JTextField的,等处理。 在这种情况下,我采取了外包的组件,可以手工完成,并与Matlab的内置软件指南。
  • 我将返回到Matlab的get和set方法,这是有点复杂,但非常好,工作对象时。
  • 我去通过MATLAB函数保存对象,并解释为什么它是明智的数据保存在数据结构的形式。
  • 最后,我也认为所谓的回调函数ode45,这是求解微分方程。 ode45特别被用来模拟各种动态系统。 一个例子是,在不同比例的电力网络行为。

我看到自己现在是一个很好的MATLAB程序员在这两个项目的经验。 对于我和我的使命的更多信息,请联系david@techonomics.se 我有F-税,每转让或按小时收费的法案。

主题修改竞舞飞扬2.0 - Blogglista.se -翻译是由N2H