Tag: 比较

C#中两个对象之间的差异

我想知道如何找到同一类的两个对象之间的区别。 因此,如果我有一个Person类,唯一的区别是Age,它将返回不同的字段/字段。 谢谢

比较两个xml并使用LINQ打印差异

我正在比较两个xml,我必须打印差异。 如何使用LINQ实现此目的。 我知道我可以使用Microsoft的XML diff补丁,但我更喜欢使用LINQ。 如果您有任何其他想法,我会实现它 //第一个Xml //第二个Xml 我想比较这两个xml和打印结果。 Issued Issue Type IssueInFirst IssueInSecond 1 image is different C01 C011 2 name is different ASP.NET ASP.NET 2.0 3 id is different 20507 20508

图像比较和返回百分比

int DiferentPixels = 0; Bitmap first = new Bitmap(“First.jpg”); Bitmap second = new Bitmap(“Second.jpg”); Bitmap container = new Bitmap(first.Width, first.Height); for (int i = 0; i < first.Width; i++) { for (int j = 0; j < first.Height; j++) { int r1 = second.GetPixel(i, j).R; int g1 = second.GetPixel(i, j).G; int b1 = second.GetPixel(i, j).B; […]

比较两个谱图以找到它们匹配算法的偏移量

我每天从互联网上录制2分钟的电台广播。 始终有相同的开始和结束的叮当声。 由于无线电广播的准确时间可能差不多6分钟,我必须录制大约15分钟的收音机。 我想确定这些歌曲在15分钟录音中的确切时间,所以我可以提取我想要的音频部分。 我已经启动了一个C#应用程序,我将MP3解码为PCM数据并将PCM数据转换为基于http://www.codeproject.com/KB/audio-video/SoundCatcher.aspx的频谱图 我尝试在PCM数据上使用交叉相关算法,但算法在6分钟左右非常慢,步长为10毫秒,有时无法找到叮当开始时间。 任何比较两个谱图匹配算法的想法? 或者更好的方法来找到叮当开始时间? 谢谢, 更新,抱歉延误 首先,感谢所有的主人,他们大多数都是相关的或有趣的想法。 我试图实现fonzo提出的Shazam算法。 但未能检测到频谱图中的峰值。 这是来自三个不同记录的起始叮当的三个频谱图。 我尝试使用blobfilterAForge.NET(但它无法识别峰值),模糊图像并检查高度差异,拉普拉斯卷积,斜率分析,检测一系列垂直条纹(但是有太多错误正)… 同时,我尝试了Dave Aaron Smith提出的Hough算法。 我在哪里计算每列的RMS。 是的是每列,它是O(N * M)但是M << N(注意一列是大约8k的样本)。 所以整体而言并不是那么糟糕,算法大约需要3分钟,但绝不会失败。 我可以选择那个解决方案,但如果可能的话,我更喜欢Shazam因为它是O(N)并且可能更快(也更冷)。 因此,你们中的任何一个人都知道一种算法可以始终检测这些光谱图中的相同点(不一定是峰值),这要归功于添加注释。 新的更新 最后,我使用上面解释的算法,我尝试实现Shazam算法,但未能在频谱图中找到适当的峰值,从一个声音文件到另一个声音文件不一致的识别点。 从理论上讲,Shazam算法是解决这类问题的方法。 Dave Aaron Smith提出的Hough算法更稳定有效。 我分割了大约400个文件,其中只有20个未能正确分割。 磁盘空间从8GB到1GB。 谢谢你的帮助。

比较XML片段和返回差异

我有一个完整的序列化对象的审计列表,我想比较它们并返回差异列表。 通过’比较’,我的意思是我想返回一个元素的文本已经改变的地方,或者已经添加了一个节点的地方(因此它不在Xml1中,但它在Xml2中 – 它不会反过来发生) 示例xml: 119 1 false 0 名称空间和标签的名称/大小写不会改变。 在此示例中可以更改的是标记之间的值和“CourseHotelLink”(其序列化列表)的数量。 我想要的最终结果是哪个节点已更改的列表 – 旧值和新值。 比较它们的最佳选择是什么? 我使用.Net 4.0所以linq是一个选项。 我需要能够进行比较而不必知道所有节点的名称 – 尽管我只会比较两个相同类型的对象。 我一直在尝试使用以下代码,但我无法适应它来挑选文本中的更改以及额外的节点。 XmlDocument Xml1 = new XmlDocument(); XmlDocument Xml2 = new XmlDocument(); Xml1.LoadXml(list[1].Changes); Xml2.LoadXml(list[2].Changes); foreach (XmlNode chNode in Xml2.ChildNodes) { CompareLower(chNode); } protected void CompareLower(XmlNode aNode) { foreach (XmlNode chlNode in aNode.ChildNodes) { string Path = […]

重叠的多个日期范围比较:如何有效地进行?

要检查两个不同日期范围内的重叠, {Start1, End1}和{Start2, End2}我正在检查: if ((Start1 = Start2)) { //overlap exists } 问题是, 如果让我说五个日期范围,比较重叠的好方法是什么? 。 检查它们中的任何一个是否相互重叠? 如果我有多个日期范围,如何查找这些范围是否重叠?

案例C#中的不敏感比较

我正在使用以下代码比较两个字符串 string1.Contains(字符串2) 但我没有得到不区分大小写搜索的结果。 此外,我不能使用String.Compare因为我不想匹配整个名称,因为名称非常大。 我需要进行不区分大小写的搜索,搜索文本可以是String1包含的任何长度。 例如* * ** * ** * ** * ** *是名称。 我在文本框中输入“erm”,我得到了结果。 但当我输入“期限”时,我得不到任何结果。 谁能帮我 :)

使用IEqualityComparer 的推荐最佳做法是什么?

我正在寻找现实世界的最佳实践,其他人可能如何实现复杂域的解决方案。

如何在C#中使用指定的容差比较DateTime对象?

默认情况下,C#将DateTime对象与100ns刻度进行比较。 但是,我的数据库将DateTime值返回到最接近的毫秒。 使用指定的容差比较C#中两个DateTime对象的最佳方法是什么? 编辑:我正在处理截断问题,而不是舍入问题。 正如Joe在下面指出的那样,舍入问题将引入新的问题。 适合我的解决方案是以下组合。 (dateTime1 – dateTime2).Duration() < TimeSpan.FromMilliseconds(1) 如果差值小于1毫秒,则返回true。 对Duration()的调用很重要,以获得两个日期之间差异的绝对值。

如何在C#中比较多维数组?

如何比较多维数组? 只是真/假。 double[,] data1 = new double[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; double[,] data2 = new double[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; //bool compare = data1.SequenceEqual(data2); 有没有办法比较2d数组像1d数组? data1.SequenceEqual(data2); 我必须比较每一秒,所以最简单的方法将是伟大的。 […]