gpt4 book ai didi

c - 如何将指针指向函数? (SVD 示例)

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:58 24 4
gpt4 key购买 nike

我找到了解决 SVD 问题的示例代码。它有这个功能:

int dsvd(float **a, int m, int n, float *w, float **v)

带有描述: * dsvd的输入如下:

  • a = mxn 矩阵被分解,被 u 覆盖

  • m = a 的行维度

  • n = a 的列维度

  • w = 返回 a 的奇异值 vector

  • 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。

最佳答案

我觉得你不需要在w和v中放值。它们是用来存储返回值的。希望以下解决方案对您有所帮助。

int main(){
int row=3;
int col=2;
float **a = (float **)malloc(row*sizeof(float*));
float *m = (float *)malloc(row*sizeof(float)); /* m is an array of size row*/
float **v = (float **)malloc(row*sizeof(float*));
int i, j;

for (i=0; i < row; i++) {
a[i] = (float*)malloc(col*sizeof(float)); /* a is row*col */
}

for (i=0; i < row; i++) {
v[i] = (float*)malloc(row*sizeof(float)); /* v is a row*row */
}

for (i=0; i < row; i++) {
for (j=0; j < col; j++) {
a[i][j] = i; /* you can assign the value you want to a */
}
}
dsvd(a, m, n, w, v);

}

关于c - 如何将指针指向函数? (SVD 示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26583800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com