好友
阅读权限10
听众
最后登录1970-1-1
|
枯叶笑
发表于 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");
}
}
} |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|