有人知道我在哪里可以找到conv2.m的源代码吗?

48次浏览(最近30天)
在过去的6个小时里,我一直在调试一个巨大的程序,并最终将问题隔离到一个函数:conv2.m
我遇到的错误是,这个程序的输出在不同的机器之间是不同的(显然不是理想的,因为我更喜欢我的计算机以确定性的方式运行)。所有其他变量都已经被认真地研究过了,所以不必费心提供其他建议。问题是……M在不同机器上的执行是不同的。我想把这个源代码包含到我的程序中,这样就不会发生这种情况。有谁知道在哪能查到吗?
谢谢,
- c
3评论
克里斯Endemann
克里斯Endemann 2016年4月29日
编辑:克里斯Endemann 2016年4月30日
conv2的输入。M都是相同的(在它们上称为相等)。这些输入是在我的程序中计算的,由数千个双精度数组成,所以这不可能排除这种可能性吗?我认为,如果有四舍五入误差的原因,那么它应该不仅仅出现在卷积中。M函数(这个程序调用很多很多函数,包括conv2)。
后续:我刚刚使用round(x,4)将输入四舍五入,但仍然遇到差异——尽管减少了。

登录评论。

接受的答案

雷纳托Agurto
雷纳托Agurto 2016年4月29日
编辑:雷纳托Agurto 2016年4月29日
根据
类型conv2
这是一个内置函数(如mean, max, sum等),而不是作为.m文件编程的函数。你打字时看到的东西。
编辑conv2
只是为了显示帮助文本吗
如果它给您带来了问题,您可以尝试自己编写这个函数(my_conv2.m)。参见conv2的文档;部分算法

更多答案(2)

j·韦伯斯特
j·韦伯斯特 2016年4月29日
我找到了这个。虽然我不能告诉你它是否适合你。
我发布警告,我真的不知道mathwork在这方面的立场是什么。我怀疑无法在.m文件中找到源代码的原因是因为它被转换为C或汇编或其他东西以提高速度。既然他们提供了大部分库的源代码,那么他们出于某种原因想要保护这些代码对我来说似乎很奇怪。

史蒂文的主
史蒂文的主 2016年4月29日
conv2 函数是内置在MATLAB中的,我们不分发此函数的源代码。
听起来你好像已经把这些区别分离出来了 conv2 用同样的数据。如果是这种情况,您是否可以使用本页面右上角的联系我们链接发送信息以重现此行为以进行技术支持调查(以确定是否为错误)?万博1manbetx你应该包括的一些信息:
  • 你在这两台机器上使用的是哪个版本的MATLAB ?如果您使用不同的版本,请尝试在两台机器上使用相同的版本,以消除出现错误的可能性conv2在两个版本之间更改。]
  • 您在两台机器上使用的是什么操作系统?
  • 你要传递的数据是输入吗conv2一模一样,连最后一位都一样isequal函数返回true)在两台机器上?
  • 包括一个mat文件,其中包含要传递的数据conv2以及调用的确切命令conv2
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2016年5月1日
操作系统之间的舍入问题 可能的。针对每个操作系统和芯片编译了高性能库。英特尔MKL(数学内核库)是 可用Linux 但通常不会安装在系统上,因为它不是FOSS(自由开源软件),只是免版税。AMD机器需要不同的高性能库。
因此,为了真正确定,您应该在调用conv2之前保存()数据并对其进行比较。

登录评论。

类别

了解更多有关循环和条件语句帮助中心文件交换

标签

社区寻宝

在MATLAB Central中寻找宝藏,并了解社区如何帮助您!

开始狩猎!