Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R AMD排序在Matlab和特征库中是不同的_R_Matlab_Linear Algebra_Rcpp_Eigen - Fatal编程技术网

R AMD排序在Matlab和特征库中是不同的

R AMD排序在Matlab和特征库中是不同的,r,matlab,linear-algebra,rcpp,eigen,R,Matlab,Linear Algebra,Rcpp,Eigen,尽管近似最小度置换函数似乎基于Egeng[,]和Matlab[]的相同底层代码(Timothy A.Davis的代码打包在套件稀疏库中),但通过RcppEigen包调用Egeng例程时,我在相同的数据矩阵上得到了不同的结果 下面是一个通过内联接口调用的matlab/octave代码(给出相同的结果)和Eigen的最小示例 Matlab/倍频程: A = gallery('wathen',2,2); p = amd(A); save('amddemo.mat', 'A', 'p') R 示例输出

尽管近似最小度置换函数似乎基于Egeng[,]和Matlab[]的相同底层代码(Timothy A.Davis的代码打包在套件稀疏库中),但通过RcppEigen包调用Egeng例程时,我在相同的数据矩阵上得到了不同的结果

下面是一个通过内联接口调用的matlab/octave代码(给出相同的结果)和Eigen的最小示例

Matlab/倍频程:

A = gallery('wathen',2,2);
p = amd(A);
save('amddemo.mat', 'A', 'p')
R

示例输出是

1    2    4    5    6    8   15    3    7    9   10   11   12   13   14

5    9    4    7   10    2    8   15   11    6   12   14   13    1    3

其中第一个解来自Eigen库,第二个来自Octave。

你也可以发布添加的数值结果,尽管我相信数据是随机生成的,所以ymmv。Eigen的版本与原始代码不同,用于处理在对角线上有一些显式零的半定矩阵。这是我能记得的主要变化。你也可以尝试“简单的特征”作为C++程序,只是为了排除我们在创建稀疏矩阵时做了一些傻事吗?我还调整了AMD代码,以便不依赖于自伴算子。这似乎没什么帮助。你能不能也把数字结果贴出来,虽然我相信数据是随机生成的,所以ymmv。Eigen的版本与原始代码不同,它可以处理在对角线上有一些显式零的半定矩阵。这是我能记得的主要变化。你也可以尝试“简单的特征”作为C++程序,只是为了排除我们在创建稀疏矩阵时做了一些傻事吗?我还调整了AMD代码,以便不依赖于自伴算子。但似乎没什么帮助。
g++ -I /usr/local/lib/R/site-library/RcppEigen/include/ amdtest.cpp -o amdtest
amdtest > dat.txt
octave -qf amdtest.m dat.txt
1    2    4    5    6    8   15    3    7    9   10   11   12   13   14

5    9    4    7   10    2    8   15   11    6   12   14   13    1    3