标签: pattern-matching

如何使用SIFT算法计算两个图像的相似程度?

我使用了Andrea VedaldiSIFT实现来计算两个相似图像的筛选描述符(第二个图像实际上是从不同角度放大同一个对象的图片).

现在我无法弄清楚如何比较描述符以告诉图像有多相似

我知道这个问题是不负责任的,除非你之前真的玩过这些东西,但我认为之前做过这个的人可能知道这个,所以我发布了这个问题.

我做的很少生成描述符:

>> i=imread('p1.jpg');
>> j=imread('p2.jpg');
>> i=rgb2gray(i);
>> j=rgb2gray(j);
>> [a, b]=sift(i);  % a has the frames and b has the descriptors
>> [c, d]=sift(j);
Run Code Online (Sandbox Code Playgroud)

matlab image-comparison pattern-matching computer-vision sift

56
推荐指数
2
解决办法
5万
查看次数

除列表之外的序列上的Scala模式匹配

我有以下代码,它们对List中的每个元素进行递归操作

def doMatch(list: List[Int]): Unit = list match {
  case last :: Nil  => println("Final element.")
  case head :: tail => println("Recursing..."); doMatch(tail)
}
Run Code Online (Sandbox Code Playgroud)

现在,忽略通过filter()foreach()可以使用此功能,这可以正常工作.但是,如果我尝试将其更改为接受任何Seq [Int],我会遇到问题:

  • Seq没有::,但确实有+:,据我所知基本上是相同的.如果我尝试匹配head +:tail然而,编译器会抱怨'错误:找不到:value +:'
  • Nil是List特有的,我不知道该替换它.如果我遇到上一个问题,我将尝试Seq()

以下是我认为代码的外观,除非它不起作用:

def doMatch(seq: Seq[Int]): Unit = seq match {
  case last +: Seq() => println("Final element.")
  case head +: tail  => println("Recursing..."); doMatch(tail)
}
Run Code Online (Sandbox Code Playgroud)

编辑:这么多好的答案!我接受了agilesteel的答案,因为他是第一个注意到::在我的例子中不是运算符,而是一个案例类,因此差异.

collections scala pattern-matching

56
推荐指数
4
解决办法
4万
查看次数

Mongo中不区分大小写的搜索

我在Mongo中使用不区分大小写的搜索,类似于/sf/ask/385057641/.

即我正在使用带有选项的正则表达式i.但是我在将正则表达式限制为该单词时遇到了麻烦,它在SQL中的表现更像"喜欢"

例如:如果我使用查询 {"SearchWord" : { '$regex' : 'win', $options: '-i' }},它会显示win,window和winter的结果.我如何将其限制为jsut show win?

我试过了,/^win$/但它说无效Json ....请建议一个方法.

提前致谢

regex case-insensitive pattern-matching match mongodb

56
推荐指数
3
解决办法
6万
查看次数

将多个空格合并到单个空间; 删除尾随/前导空格

我想将多个空格合并到单个空格中(空格也可以是制表符)并删除尾随/前导空格.

例如...

string <- "Hi        buddy        what's up    Bro" 
Run Code Online (Sandbox Code Playgroud)

"Hi buddy what's up bro"
Run Code Online (Sandbox Code Playgroud)

我检查了Regex给出的解决方案,用一个空格替换多个空格.请注意,不要将\ t或\n作为玩具字符串中的精确空间并将其作为模式输入gsub.我希望在R.

请注意,我无法在玩具串中放置多个空格.谢谢

r pattern-matching

56
推荐指数
5
解决办法
4万
查看次数

检查字符串是否以某种模式结束

如果我有一个像这样的字符串:

This.is.a.great.place.too.work.
Run Code Online (Sandbox Code Playgroud)

要么:

This/is/a/great/place/too/work/
Run Code Online (Sandbox Code Playgroud)

比我的程序应该给我的句子是有效的,它有"工作".

如果我有 :

This.is.a.great.place.too.work.hahahha
Run Code Online (Sandbox Code Playgroud)

要么:

This/is/a/great/place/too/work/hahahah
Run Code Online (Sandbox Code Playgroud)

然后我的程序不应该告诉我句子中有"工作".

所以我正在查看java字符串,以便在序列结束时找到一个单词.,或,/之前.我怎样才能做到这一点?

java regex string pattern-matching

54
推荐指数
2
解决办法
13万
查看次数

Pattern.quote方法有什么用?

我试图理解Pattern.quote使用以下代码:

String pattern = Pattern.quote("1252343% 8 567 hdfg gf^$545");
System.out.println("Pattern is : "+pattern);
Run Code Online (Sandbox Code Playgroud)

产生输出:

Pattern is : \Q1252343% 8 567 hdfg gf^$545\E
Run Code Online (Sandbox Code Playgroud)

什么是\Q\E这里?文档说明说:

返回String指定的文字模式String.

此方法生成一个String可用于创建Pattern与字符串匹配的字符s,就好像它是文字模式一样.

输入序列中的元字符或转义序列将没有特殊含义.

但是Pattern.quote返回类型是String而不是编译Pattern对象.

为什么需要此方法以及一些用法示例?

java regex pattern-matching

53
推荐指数
5
解决办法
5万
查看次数

SQL Server LIKE包含括号字符

使用SQL Server 2008.我有一个包含以下列的表:

sampleData (nvarchar(max))
Run Code Online (Sandbox Code Playgroud)

其中一些行中此列的值是格式如下的列表:

["value1","value2","value3"]
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个简单的查询,通过检测左括号,返回列表格式为这样的列的所有行.

SELECT * from sampleTable where sampleData like '[%'
Run Code Online (Sandbox Code Playgroud)

上面的查询不起作用,因为'['是一个特殊的字符,我不能为我的生活找出如何逃避括号所以我的查询做我想要的.

谢谢你的任何建议!

sql sql-server pattern-matching

51
推荐指数
2
解决办法
5万
查看次数

我们可以使用匹配来检查类的类型

我是scala的新手,match现在我正在学习这个关键字.

我想知道我们是否可以使用关键字match来检查类的类型.我的代码是:

object Main {
    def main(args: Array[String]) {
        val x = "AA"
        checkType(x)
    }

    def checkType(cls: AnyRef) {
        cls match {
            case String => println("is a String")
            case Date => println("is a Date")
            case _ => println("others")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

代码无法编译,因此,这是不可能的?什么是scala-way来检查类的类型?是吗:

if(cls.isInstanceOf[String]) { ... }
else if(cls.isInstanceOf[Date]) { ... }
else { ... }
Run Code Online (Sandbox Code Playgroud)

对?

scala pattern-matching match

50
推荐指数
2
解决办法
5万
查看次数

OCaml:在另一个内部匹配表达式?

我目前正在与OCaml合作开展一个小项目; 一个简单的数学表达式简化器.我应该在表达式中找到某些模式,并简化它们,以便表达式中的括号数减少.到目前为止,我已经能够实现大多数规则,除了两个,为此我决定创建一个递归的,模式匹配的"过滤器"函数.我需要实现的两个规则是:

- 将形式a - (b + c)或类似形式的所有表达式转换为a - b - c

- 将形式a /(b*c)或类似的所有表达式转换为a/b/c

...我怀疑它会相当简单,一旦我设法实现了一个,我就可以轻松实现另一个.但是,我遇到了递归模式匹配函数的问题.我的类型表达式是这样的:

type expr =
 | Var of string            (* variable *)
 | Sum of expr * expr       (* sum  *)
 | Diff of expr * expr      (* difference *)
 | Prod of expr * expr      (* product *)
 | Quot of expr * expr      (* quotient *)
;;
Run Code Online (Sandbox Code Playgroud)

我主要遇到麻烦的是在比赛表达中.例如,我正在尝试这样的事情:

let rec filter exp =   
    match exp with       
    | Var v -> Var v                        
    | Sum(e1, …
Run Code Online (Sandbox Code Playgroud)

ocaml pattern-matching

49
推荐指数
2
解决办法
3万
查看次数

可以在Scala中匹配范围吗?

是否可以匹配Scala中的一系列值?

例如:

val t = 5
val m = t match {
    0 until 10 => true
    _ => false
}
Run Code Online (Sandbox Code Playgroud)

mtrue,如果t为0和10,但假另有.这一点当然不起作用,但有没有办法实现类似的东西?

scala range pattern-matching matching

49
推荐指数
2
解决办法
2万
查看次数