枯叶笑 发表于 2018-3-24 21:23

离散卷积

新人第一次发帖,刚学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

数字信号处理吗这个有什么用呢?

枯叶笑 发表于 2018-3-24 21:28

榜样小二 发表于 2018-3-24 21:26
数字信号处理吗这个有什么用呢?

数字信号处理,把两个不同序列卷积,具体啥用我也不知道哈哈,我们老师要求我们把卷积过程用程序写出来我就写了

苏紫方璇 发表于 2018-3-24 22:34

不懂觉厉
建议楼主把代码用代码框处理一下,比较美观,不会的话可以参考下面的教程
[公告]发帖代码插入教程
https://www.52pojie.cn/thread-713042-1-1.html

杨大善人 发表于 2018-3-25 14:17

我也不明觉厉,离散卷积

杨大善人 发表于 2018-3-25 14:19

估计就像 求和,求积那样,只是做个练习。用java实现,以后计算的时候 直接输入两个数。    最后总结: 只是一道练习题

追随 发表于 2018-3-25 19:27

感觉很厉害

枯叶笑 发表于 2018-3-26 13:20

杨大善人 发表于 2018-3-25 14:19
估计就像 求和,求积那样,只是做个练习。用java实现,以后计算的时候 直接输入两个数。    最后总结:...

对的。就是一个离散序列卷积的算法,主要是方便以后求任何序列卷积时候不用自己用笔算,直接通过程序就得出结果,其实还是我懒不爱算,就花点时间写了这个程序,方便写作业。
页: [1]
查看完整版本: 离散卷积