返回信息流VC matlab mex的问题
是这样的,一开始编写了一段matlab的程序,然后由于计算效率问题就把这段程序转成了用C编写的MEX程序 但是两者的计算结果不一样。。。。
2*3的小矩阵有时结果相同,但大矩阵的话就是大部分数相同,小部分不同,但对我的主程序影响也很大了。
下面贴出两个程序:
matlab的程序:
for(u=1;u<=j;u++)
{
for(v=1;v<=j;v++)
{
double u0,v0,u1,v1,u2,v2,h,t,w1;
u0=*(V+u-1);v0=*(V+v-1);u1=*(V+j+u-1);v1=*(V+j+v-1);
u2=*(V+2*j+u-1);v2=*(V+2*j+v-1);
h=-pow(u2-v2,2);
t=-2*(pow(u1-v1,2)+pow(u0-v0,2));
w1=exp(h/a1)*exp(t/ax);
*(du+u-1)=*(du+u-1)+w1;
*(w+(v-1)*j+u-1)=w1;
if ((pow(u1-v1,2)+pow(u0-v0,2))<=r )
*(G+(v-1)*j+u-1)=w1;
else
*(G+v+(u-1)*j)=0;
}
}
用C写的程序:
for(u=1;u<=j;u++)
{
for(v=1;v<=j;v++)
{
double u0,v0,u1,v1,u2,v2,h,t,w1;
u0=*(V+u-1);v0=*(V+v-1);u1=*(V+j+u-1);v1=*(V+j+v-1);
u2=*(V+2*j+u-1);v2=*(V+2*j+v-1);
h=-pow(u2-v2,2);
t=-2*(pow(u1-v1,2)+pow(u0-v0,2));
w1=exp(h/a1)*exp(t/ax);
*(du+u-1)=*(du+u-1)+w1;
*(w+(v-1)*j+u-1)=w1;
if ((pow(u1-v1,2)+pow(u0-v0,2))<=r )
*(G+(v-1)*j+u-1)=w1;
else
*(G+v+(u-1)*j)=0;
}
}
求高手赐教 这两段程序哪里不一样啊!
这是一条镜像帖。来源:北邮人论坛 / matlab / #8449同步于 2011/7/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
求大牛帮忙看看这两段程序哪里不一样?
lazydog616
2011/7/28镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复