📄 mat_orth.cpp
字号:
#include <malloc.h>
void mat_transpose (float *, int , int , float *);
void mat_mult (float *, int , int , float *, int , int , float *);
int svd(float *, int , int , float *, float *);
/*mat_orth-矩阵正交化子程序
*矩阵orthog是矩阵mat的一个正交基,它的模为1
*/
void mat_orth (float *mat, int n, float *orthog)
{
float *u, *v, *d, *temp;
int i;
u =(float*) malloc(n * n* sizeof(float));
d =(float*) malloc(n* sizeof(float));
v =(float*) malloc(n * n* sizeof(float));
temp =(float*) malloc(n * n* sizeof(float));
for (i = 0; i < n; i++) {
u[i * n + i] = mat[i * n + i];
}
svd (u, n, n, d, v);
for (i = 0; i < n; i++) {
temp[i * n + i] = 1 / (d[i]);
}
mat_mult (u, n, n, temp, n, n, v);
mat_transpose (u, n, n, temp);
mat_mult (v, n, n, temp, n, n, u);
mat_mult (u, n, n, mat, n, n, orthog);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -