【发布时间】:2014-10-27 08:45:28
【问题描述】:
我找到了一个解决 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 中输入什么样的值。
【问题讨论】:
-
如果
a1==5,那么你忘记了a[4]。并且您不应该转换 malloc 的返回值:stackoverflow.com/q/605845/3684343
标签: c double-pointer