吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2639|回复: 7
收起左侧

[Java 转载] 离散卷积

  [复制链接]
枯叶笑 发表于 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[x+x1];
                for(int i=x1;i<x+x1;i++) {
                        xn[i]=input.nextInt();
                       
                }
                for(int i=0;i<xn.length;i++) {
                        System.out.println("xn("+i+") ="+xn[i]+"\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[h+h1];
                for(int i=h1;i<h+h1;i++) {
                        hn[i]=input.nextInt();
        }
                for(int i=0;i<hn.length;i++) {
                        System.out.println("hn("+i+") ="+hn[i]+"\t");
                }
               
                int yn[]=new int[h+x+h1+x1]; //未完全进入
                        for(int n=h1;n<h+h1-1;n++) {
                                for(int m=h1;m<=n;m++) {
                                        yn[n]+=xn[m]*hn[n-m];
                                }
                        }//完全进入
                        for(int n=h+h1-1;n<x+x1;n++) {
                                for(int m=n-h+1;m<=n;m++) {
                                        yn[n]+=xn[m]*hn[n-m];
                                }
                        }//部分出去
                        for(int n=x+x1;n<x+x1+h-1;n++) {
                                for(int m=n-h+1;m<x+x1;m++) {
                                        yn[n]+=xn[m]*hn[n-m-1];
                                }
                        }
                        System.out.println("卷积结果为 :");
                        for(int i=0;i<yn.length;i++) {
                                System.out.print("yn("+i+") ="+yn[i]+"\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实现,以后计算的时候 直接输入两个数。    最后总结:  ...

对的。就是一个离散序列卷积的算法,主要是方便以后求任何序列卷积时候不用自己用笔算,直接通过程序就得出结果,其实还是我懒不爱算,就花点时间写了这个程序,方便写作业。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-16 13:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表