离散卷积
新人第一次发帖,刚学java没多久,大神勿喷用java写的这个离散序列的卷积,可以自定义序列长度,和位置,本来想用集合写,想了想用还是用数组好写点
package 离散卷积;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner input=new Scanner(System.in);
System.out.print("请输入序列x(n)的左边起在x轴上第一个序列下标 请注意需要大于0");
int x1=input.nextInt();
System.out.print("请输入序列x(n)的长度");
int x=input.nextInt();
System.out.println("请输入序列x(n)的值");
int xn[]=new int;
for(int i=x1;i<x+x1;i++) {
xn=input.nextInt();
}
for(int i=0;i<xn.length;i++) {
System.out.println("xn("+i+") ="+xn+"\t");
}
System.out.print("请输入序列h(n)的左边起在x轴上第一个序列下标 请注意需要大于0");
int h1=input.nextInt();
System.out.print("请输入序列h(n)的长度");
int h=input.nextInt();
System.out.println("请输入序列h(n)的值");
int hn[]=new int;
for(int i=h1;i<h+h1;i++) {
hn=input.nextInt();
}
for(int i=0;i<hn.length;i++) {
System.out.println("hn("+i+") ="+hn+"\t");
}
int yn[]=new int; //未完全进入
for(int n=h1;n<h+h1-1;n++) {
for(int m=h1;m<=n;m++) {
yn+=xn*hn;
}
}//完全进入
for(int n=h+h1-1;n<x+x1;n++) {
for(int m=n-h+1;m<=n;m++) {
yn+=xn*hn;
}
}//部分出去
for(int n=x+x1;n<x+x1+h-1;n++) {
for(int m=n-h+1;m<x+x1;m++) {
yn+=xn*hn;
}
}
System.out.println("卷积结果为 :");
for(int i=0;i<yn.length;i++) {
System.out.print("yn("+i+") ="+yn+"\t");
}
}
} 数字信号处理吗这个有什么用呢? 榜样小二 发表于 2018-3-24 21:26
数字信号处理吗这个有什么用呢?
数字信号处理,把两个不同序列卷积,具体啥用我也不知道哈哈,我们老师要求我们把卷积过程用程序写出来我就写了 不懂觉厉
建议楼主把代码用代码框处理一下,比较美观,不会的话可以参考下面的教程
[公告]发帖代码插入教程
https://www.52pojie.cn/thread-713042-1-1.html
我也不明觉厉,离散卷积 估计就像 求和,求积那样,只是做个练习。用java实现,以后计算的时候 直接输入两个数。 最后总结: 只是一道练习题 感觉很厉害 杨大善人 发表于 2018-3-25 14:19
估计就像 求和,求积那样,只是做个练习。用java实现,以后计算的时候 直接输入两个数。 最后总结:...
对的。就是一个离散序列卷积的算法,主要是方便以后求任何序列卷积时候不用自己用笔算,直接通过程序就得出结果,其实还是我懒不爱算,就花点时间写了这个程序,方便写作业。
页:
[1]