卷积c语言编程,卷积编译码

本文目录一览:

c语言,急求写一个离散数组卷积的程序,能够直接运行的

include stdio.h

#include stdlib.h

conv(int *u,int *v, int m, int n);

void main()

{

int i = 0;

int a[4] = {3,10,13,22};

int b[5] = {6,2,15,4,1};

int m = sizeof(a)/sizeof(a[0]);

int n = sizeof(b)/sizeof(b[0]);

conv(a,b,m,n);

}

conv(int u[],int v[], int m, int n)

{

int i, j;

int k = m+n-1;

int w[10]={0};

for(i=0; ik; i++){

for(j=max(0,i+1-n); j=min(i,m-1); j++){

w[i] += u[j]*v[i-j];

}

printf(“%d/n”,w[i]);

}

}

如何用C语言实现数组的卷积过程~~~

积分为线性卷积,和圆形卷积。而题目是线性卷积,然后是所求的结果个数是上面两个数组 个数的和减去1

比如上面h数组里面单元是5 而x数组 是4

所以肯定一点是结果是等于8个数的

result[(sizeof(h) + sizeof(x)) / sizeof(double) – 1];这个就可以说明了

第二个知识点是卷积是怎么求的。第一步肯定是判断两个数组 那个长度长

conv(x, h, sizeof(x) / sizeof(x[0]), sizeof(h) / sizeof(h[0]), result); 就是实现这个目标的。

然后是长度长的放前面

好吧 我换个 数字来就把

x【】=

h【】=

然后卷积 一个是 x0*h0=1;实现语句 是第一个

for (int i = 0; i lenH; i++)

{

for (int j = 0; j = i; j++)

result[i] += x[j] * h[i – j];

}

此时 已经要转入第二步骤了:

for (int m = lenH; m lenX; m++){

for (int j = 0; j lenH; j++)

result[m] += x[m – j] * h[j];

}

第二部 应该是 x*h+x1*h(1-1)= 这里得h1 用0代替 但程序里 不是这样 而是 用x*h=

好吧 我可能设置的h数组不够长 加入 h有两个。x有

那么 结果 应该是x2*y1+x1*y0;

然后是第三部

是说 在要求的 结果 最后几个数字时候 比如原题里面 应该是有8个的。但到第二个循环才求到X得长度5个。

所以 后面应该是resual记住 数组下标 比实际小1. 所以

是这样的

用 for (int n = lenX; n lenX + lenH – 1; n++){

for (int j = i – lenX + 1; j lenH; j++)

result[n] += x[n – j] * h[j];

}里面的i 要改成n

for (int n = lenX; n lenX + lenH – 1; n++){

for (int j = n – lenX + 1; j lenH; j++)

result[n] += x[n – j] * h[j];

}

然后 是这样分析的

结果等于=x(0)h(5-0)+x(1)h(5-1)+x(2)h(5-2)+x(3)h(5-3)=x(0)h(5)+x(1)h(4)+x(2)h(3)+x(3)h(2) 记住 数组不够的地方 用0代替

copy(result, result[8], ostream_iteratordouble(cout, ” “)); 这个函数 就不想说了 自己去看stl 算法吧

另外,虚机团上产品团购,超级便宜

C语言用子函数实现卷积

conv(int u[],int v[],int w[], int m, int n)

{

   int i, j;

       

   int k = m+n-1;

   for(i=0; ik; i++)

      for(j=max(0,i+1-n); j=min(i,m-1); j++)

      {   

       w[i] += u[j]*v[i-j];

      } 

}

u[],v[]为原始数组,m,n分别为数组长度,w[]为卷积结果(w[]需初始化为0),其长度为m+n-1

卷积积分的C语言程序

代码并不长,建议单步运行去看看,看走到哪一步时结果与你想象的不一致,再分析那一段代码…

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/230418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-10 18:17
下一篇 2024-12-10 18:17

相关推荐

  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28
  • Python作为中心语言,在编程中取代C语言的优势和挑战

    Python一直以其简单易懂的语法和高效的编码环境而著名。然而,它最近的发展趋势表明Python的使用范围已经从脚本语言扩展到了从Web应用到机器学习等广泛的开发领域。与此同时,C…

    编程 2025-04-28
  • Python基础语言

    Python作为一种高级编程语言拥有简洁优雅的语法。在本文中,我们将从多个方面探究Python基础语言的特点以及使用技巧。 一、数据类型 Python基础数据类型包括整数、浮点数、…

    编程 2025-04-28

发表回复

登录后才能评论