我找到了一个解决 SVD 的示例代码。它有这个功能:
int dsvd(float **a, int m, int n, float *w, float **v)
带有描述:* dsvd 的输入如下:
a = mxn 矩阵被分解,被 u 覆盖
m = a 的行维度
n = a 的列维度
w = 返回 a 的奇异值向量
v = 返回右正交变换矩阵
让我们假设我想用矩阵 (=a) 解决 SVD = {1,0,0,0,2, 0,0,3,0,0, 0,0,0,0,0, 0,4 ,0,0,0};
那我应该把什么放入a,m,n,w,v????
我是否必须输入类似的值
int a1 = 5;
int b1 = 4;
float **a = (float **)malloc(a1*sizeof(float*))
a[0] = (float*)malloc(b1*sizeof(float))
a[1] = (float*)malloc(b1*sizeof(float))
a[2] = (float*)malloc(b1*sizeof(float))
a[3] = (float*)malloc(b1*sizeof(float))
a[0][0] = 1, a[0][4] = 2 ......
??????
即使它是正确的(实际上我不这么认为..),我不知道我必须在 *w 和 **v 中输入什么样的值。