Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
C QR算法实现3x3定点_C_Embedded_Linear Algebra_Fixed Point_Cortex M - Fatal编程技术网

C QR算法实现3x3定点

C QR算法实现3x3定点,c,embedded,linear-algebra,fixed-point,cortex-m,C,Embedded,Linear Algebra,Fixed Point,Cortex M,我想找到一个3x3矩阵的特征值和特征向量(如果不总是对称的话,大部分是这样!!)。我的号码以定点格式存储(准确地说是16.16) 请注意,我并不太在意性能,只是简单地实现一个算法来完成这项工作 下面的代码,当您构建并运行它(使用库)时,会生成正确的特征值,但不会生成正确的特征向量 如果我正确理解了算法,那么特征向量就是所有计算出的Qs的乘积 有人知道可能出了什么问题吗? (即使是对代码(写作风格等)的更正,你也可以想到任何你能想到的,但当然要把你的注意力集中在特征向量上!:):P 实际循环类似于

我想找到一个3x3矩阵的特征值和特征向量(如果不总是对称的话,大部分是这样!!)。我的号码以定点格式存储(准确地说是16.16)

请注意,我并不太在意性能,只是简单地实现一个算法来完成这项工作

下面的代码,当您构建并运行它(使用库)时,会生成正确的特征值,但不会生成正确的特征向量

如果我正确理解了算法,那么特征向量就是所有计算出的Qs的乘积

有人知道可能出了什么问题吗? (即使是对代码(写作风格等)的更正,你也可以想到任何你能想到的,但当然要把你的注意力集中在特征向量上!:):P

实际循环类似于3条线…它所做的是:

eigenvectors = identity matrix

1) QR decomposition A = Q*R

2) Anew = R*Q (multiply the factors in the reverse order, and iterate)

3) eigenvectors = eigenvectors * Q
谢谢!!哦,我是新手


这个:

我已经用了很多年,而且有很多好处

要比较结果,您可以使用
R
(使用LINPACK例程DQRDC2作为默认值)甚至是MATLAB

然后您可以使用R中的
qr()
命令和
LAPACK=TRUE
选项来使用LAPACK例程:

> QR <- qr(Mat,LAPACK=TRUE)
> QR

谢谢你的回答。首先,我已经将结果与倍频程进行了检查/比较,结果并不相同。libfixmath的QR算法使用gram-schmit算法进行分解,正如我提到的,它是正确的(我已经检查了Q和R)。LAPACK不是用于浮点计算吗?C代码链接已断开。建议使用githubgists@JasonS我看到链接是好的。您只能下载文件,不能查看。尽管如此,我还是会改变它并开始使用github gists。谢谢!:)
> Q <- qr.Q(QR)
> round( t(Q) %*% Q , 10 )
     [,1] [,2] [,3] [,4]
[1,]    1    0    0    0
[2,]    0    1    0    0
[3,]    0    0    1    0
[4,]    0    0    0    1

> all.equal(Q %*% qr.R(QR),Mat)
[1] TRUE