happycock(SSWW)速来接分!!

goto123 2003-08-01 12:16:55
感谢你的补充~~
真想把给njluhao的100分收回来给一半你
(njluhao老兄莫怪哦~~:))


卷积算法:(from happycock(SSWW))

只是演示,为了简单,将一些初始化、动分数组省略了。VC6,TC2都能编译运行。
#include <stdio.h>
void juanji(int* a, int m, int* b, int n, int* r)
{
int i, j, t = m + n - 1;
for (i = 0; i < t; i++)
for (j = 0; j < m && j <= i; j++)
if (i - j < n) r[i] += a[j] * b[i - j];
}
void main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int b[4] = { 1, 1, 1, 1 };
int r[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }, i;
juanji(a, 5, b, 4, r);
for (i = 0; i < 8; i++) printf("%d ", r[i]);
}


...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
goto123 2003-08-03
  • 打赏
  • 举报
回复
njluhao(浩然),给我发来吧~~goto123@163.net
njluhao 2003-08-03
  • 打赏
  • 举报
回复
500*500差距更大了,
我的0.008655s;happycock(SSWW)兄的0.011095s;
FFT快速卷积才0.003120s!
njluhao 2003-08-03
  • 打赏
  • 举报
回复
我试过了,happycock(SSWW)兄的算法简练但是效率比我的算法要低一些,
因为每次循环j都是从0开始,需要加进去一些判断。
400*400个点的卷积我的用了0.006459s,而老兄用了0.007741s
呵呵~~
我还有一个用FFT的算法,楼主要的话联系njluhao@163.net
happycock 2003-08-03
  • 打赏
  • 举报
回复
首先说的是,在序列很长的情况下,FFT比原始方法快很多,否则还要他干什么?因此你那程序说在序列长的情况下比我的好没意义——这时必须换FFT。
其次,在序列短的情况下,我不知道你的时间观念有多精确,几个毫秒都能感觉出来?
我的程序结果都出来了,你还在敲代码,你说谁快?
happycock 2003-08-02
  • 打赏
  • 举报
回复
接分,^_^
njluhao 2003-08-01
  • 打赏
  • 举报
回复
up!!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧