gpt4 book ai didi

c - 如何更高效地实现矩阵公式?

转载 作者:行者123 更新时间:2023-11-30 15:07:42 30 4
gpt4 key购买 nike

最近想用C实现一个矩阵公式,如下图:

enter image description here

其中,P_{i,j}={x_{i,j},y_{i,j},z_{i,j}}

这是我的类 C 算法:

SurfacePoint(i,j,p,q,Nu,Nv,P){
uidx = i - p;
S = 0.0;
for(l=0; l<=q; l++){
temp = 0.0;
vidx = j - q + l
for(k=0; k<=p; k++){
temp = temp + Nu[k]*P[uidx+k][vidx];
}
S = S + Nv[l]*temp;
}
return S;
}

但是,由于P是一个 vector ,而不是实数,所以我需要使用数组temp和数组S恢复结果

实现

uidx = i - p;
for(l = 0; l <= q; l++){
temp[0] = 0;
temp[1] = 0;
temp[2] = 0;
vidx = j - q + l;
for(k = 0; k <= p; k++){
temp[0] = temp[0] + Nu[k]*P[uidx+k][vidx][0];
temp[1] = temp[1] + Nu[k]*P[uidx+k][vidx][1];
temp[2] = temp[2] + Nu[k]*P[uidx+k][vidx][2];
}
S[0] = S[0] + Nv[l]*temp[0];
S[1] = S[1] + Nv[l]*temp[1];
S[2] = S[2] + Nv[l]*temp[2];
}

对于C,我是个新人,所以我想知道:

  • 有没有更高效的实现方法?

最佳答案

由于 3-D vector 之间没有相互作用,我认为你可以实现一个正常的矩阵 vector 乘法函数来计算

Nu^T * P * Nv

并在P元素的每个维度上调用它3次。但当然,您需要重新组织存储,以便 P 可以被视为具有实数元素的 3 个独立矩阵。

关于c - 如何更高效地实现矩阵公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38029511/

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