用matlab编写给一个信号加十种白噪声后,进行一种lmd分解(此过程已经有)然后再将结果求均值,跪求!!

用matlab编写给一个信号加十种白噪声后,进行一种lmd分解(此过程已经有)然后再将结果求均值,跪求!!,第1张

十种白噪声后是个什么概念?麻烦您解释一下。

我认为:所谓白噪声的参数就是两个(均值,方差),一般在信号处理中都是带限噪声,两种白噪声相加之后只是均值和方差发生了改变。

严格意义上讲是在所有频率上具有相等功率的不相关随机噪声过程。

所以,如果你需要随机数字,可以考虑RAND等函数。

虽然未能帮你解决问题,希望能对你起到参考作用。

function jueche=guohe

%%%%%%%%%%%%%%%%%%%%%%

程序开始需要知道商人仆人数;

n=input('输入商人数目: ')

nn=input('输入仆人数目: ')

nnn=input('输入船的最大容量: ')

if nn>n

n=input(''输入商人数目:')

nn=input('输入仆人数目:')

nnn=input('输入船的最大容量:')

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 决策生成

jc=1 %决策向量放在矩阵d中,jc为插入新元素的行标初始为1;

for i=0:nnn

for j=0:nnn

if (i+j<=nnn)&(i+j>0)% 满足条D={(u,v)|1<=u+v<=nnn,u,v=0,1,2}

d(jc,1:3)=[i,j,1];%生成一个决策向量立刻扩充为三维;

d(jc+1,1:3)=[-i,-j,-1] % 同时生成他的负向量;

jc=jc+2% 由于生成两个决策向量,则jc要向下移动两个; end

end

j=0

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 状态数组生成

kx=1 % 状态向量放在A矩阵中,生成方法同矩阵生成;

for i=n:-1:0

for j=nn:-1:0

if ((i>=j)&((n-i)>=(nn-j)))|((i==0)|(i==n))

% (i>=j)&((n-i)>=(nn-j)))|((i==0)|(i==n))为可以存在的状态的约束条件

A(kx,1:3)=[i,j,1] %生成状态数组集合D `

A(kx+1,1:3)=[i,j,0]

kx=kx+2

end

end

j=nn

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 将状态向量生成抽象矩阵

k=(1/2)*size(A,1)

CX=zeros(2*k,2*k)

a=size(d,1)

for i=1:2*k

for j=1:a

c=A(i,:)+d(j,:)

x=find((A(:,1)==c(1))&(A(:,2)==c(2))&(A(:,3)==c(3)))

v(i,x)=1 %x为空不会改变v值

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% dijstra算法

x=1y=size(A,1)

m=size(v,1)

T=zeros(m,1)

T=T.^-1

lmd=T

P=T

S=zeros(m,1)

S(x)=1

P(x)=0lmd(x)=0

k=x

while(1)

a=find(S==0)

aa=find(S==1)

if size(aa,1)==m

break

end

for j=1:size(a,1)

pp=a(j,1)

if v(k,pp)~=0

if T(pp)>(P(k)+v(k,pp))

T(pp)=(P(k)+v(k,pp))

lmd(pp)=k

end

end

end

mi=min(T(a))

if mi==inf

break

else

d=find(T==mi)

d=d(1)

P(d)=mi

T(d)=inf

k=d

S(d)=1

end

end

if lmd(y)==inf

jueche='can not reach'

return

end

jueche(1)=y

g=2h=y

while(1)

if h==x

break

end

jueche(g)=lmd(h)

g=g+1

h=lmd(h)

end

jueche=A(jueche,:)

jueche(:,3)=[]

#include <stdio.h>

#include <malloc.h>

#include <conio.h>

/*回溯法解决

基本构架

while(){

do{

\\\\\\\

}while(检查是符合格)

if(x[k-1]<=n)

{

if(满足条件){}

else {下一步}

}

else{回溯,尝试下一位置}

}

}*/

int a=3,b=3

//chacuo()中运人两岸需满足商>仆

//注意0商<N仆的现象

int chacuo(int i,int k,int x[])

{

//运两个商人

if(x[k-1]==1)

{

if(i%2==0) {

if(a>=2)

{

if(((a-2)!=0 &&a-2<b)||(5-a)<(3-b)) {return -1}

a=a-2

}

else return -1

}

else {

if(a<=1)

{if((a+2<b)||((1-a)!=0&&(1-a)<(3-b))){return -1}

a=a+2

}

else return -1

}

}

//运一个商人

if(x[k-1]==2)

{

if(i%2==0) {

if(a>=1){

if(((a-1)!=0&&a-1<b)||(2-a)<(3-b)){return -1}

a=a-1

}

else return -1

}

else {

if(a<=2){

if((a+1<b)||((2-a)!=0 &&(2-a)<(3-b))){return -1}

a=a+1

}

else return -1

}

}

//运一个仆人

if(x[k-1]==3)

{

if(i%2==0) {

if(b>=1){

if((a!=0&&a<b-1)||((3-a)!=0&&(3-a)<(4-b))){return -1}

b=b-1

}

else return -1

}

else {

if(b<=2)

{

if((a!=0&&a<b+1)||((3-a)!=0&&(3-a)<(2-b))){return -1}

b=b+1

}

else return -1

}

}

//运两个仆人

if(x[k-1]==4)

{

if(i%2==0) {

if(b>=2){

if((a!=0&&a<b-2)||((3-a)!=0&&(3-a)<(5-b))){return -1}

b=b-2

}

else return -1

}

else {

if(b<=1){

if((a!=0&&a<b+2)||((3-a)!=0&&(3-a)<(1-b))){return -1}

b=b+2

}

else return -1

}

}

//运一商一仆

if(x[k-1]==5)

{

if(i%2==0) {

if(a>=1&&b>=1){

if(((a-1)!=0&&a-1<b-1)||(4-a)<(4-b)){return -1}

a--b--

}

else return -1

}

else {

if(a<=2&&b<=2){

if((a+1<b+1)||((2-a)!=0&&(2-a)<(2-b))){return -1}

a++b++

}

else return -1

}

}

return 1

}

//显示

void print(int x[])

{

int i

for(i=0x[i]!=0i++)

{

if((i%2)==0)printf(" 去-->")

else printf(" 返<--")

if(x[i]==1)printf("2商人")

if(x[i]==2)printf("1商人")

if(x[i]==3)printf("1仆人")

if(x[i]==4)printf("2仆人")

if(x[i]==5)printf("1商人1仆人")

}

printf("\n")

}

主函数部分,框架给你了,你动动脑子,自己写吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11486939.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存