美文网首页
ADSP简单题一步到位

ADSP简单题一步到位

作者: withism | 来源:发表于2017-12-14 00:12 被阅读14次

%---------西安电子科技大学ADSP仿真作业第一题-----%

%------本题目要填写四个表格,每个表格附加一个图像--%

%------填写表格的时候,要改动四个代码块,在程序中标出来了--------%

%--表格1和表格3的填写需要取消注释奇数代码块1和3,注释掉代码块2和4-%

%--表格2和表格4的填写需要取消注释奇数代码块2和4,注释掉代码块1和3-%

%-------自定义数据集可以根据自己的喜好随意设置----%

%---------作者:小何-------------------------%

%---------请关注【科研果园】微信公众号----------%

%---------打开微信搜索"outputing"------------%

clear all;

clc;

%---------自定义的数据,a1,a2,Vw,M=信号长度----%

a1=0.1997;

a2=0.313;

Vw=0.19970313;

M=10000;

Vv_set=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0];

N_set=[1 2 3 4 5 6 7 8 9 10];

%--------------输出的预定义数据集合------------%

SNR_data=zeros(1,10);

cost_data=zeros(1,10);

cost_1_data=zeros(1,10);

for i=1:10

%-代码块1:第1个表和第3个表,用这个,注释掉下面的代码块2---%

% Vv=Vv_set(i);N=8;

%-代码块2:第2个表和第4个表,用这个,注释掉上面的代码块1---%

N=N_set(i);Vv=0.5;

%------------------这下面的代码不要改动--------------%

% 产生发射信号S(n)

randn('state',0);

W=sqrt(Vw)*randn(1,M);

S=zeros(1,M);

S(1)=W(1);

S(2)=W(2);

for n=3:M

S(n)=a1*S(n-1)+a2*S(n-2)+W(n);

end

%figure;n=1:M;stem(n,S);

%title('The source signal S(n)');xlabel('n');ylabel('S(n)');

%-----------产生噪声信号X(n)=S(n)+V(n)--------%

randn('state',1);

V= Vv*randn(1,M);

X=S+V;

%figure;n=1:M;stem(n,X(n));

%title('The received signal X(n)');xlabel('n');ylabel('X(n)');

%-----------计算信噪比SNR--------------------%

S_Power=mean(S.^2);

N_Power=mean(V.^2);

SNR=10*log10(abs(S_Power/N_Power));%  SNR->信噪比

%-----------构造长度为N的Wiener滤波器----------%

r=zeros(1,N+1);

for n=0:N

temp=0;

for c=(n+1):M

temp=temp+X(c)*X(c-n);

end

r(n+1)=(1/M)*temp;

temp=0;

end

%r(1)=(1/M)(X(1)*X(1)+(X(2)*X(2)+(X(3)*X(3)+...+(X(M)*X(M))

%r(2)=(1/M)(X(2)*X(1)+(X(3)*X(2)+(X(4)*X(3)+...+(X(M)*X(M-1))

%r(3)=(1/M)(X(3)*X(1)+(X(4)*X(2)+(X(5)*X(3)+...+(X(M)*X(M-2))

%r(4)

%r(5)

%...

%r(n+1)=(1/M)(X(n+1)*X(1)+(X(n+2)*X(2)+(X(n+3)*X(3)+...+(X(M)*X(M-n))

%R为信号X(n)的自相关矩阵,维数为(N-1)*(N-1)

%R是由r构造而成的N*N的矩阵

R=zeros(N,N);

R(1,:)=r(1:N);

for row=2:N

R(row,1)=r(row);

R(row,2:N)=R(row-1,1:N-1);

end

%-----------P是X(n)与S(n)的互相关---------%

P=zeros(1,N);

X_temp=X;

for k=0:N-1

X_temp(1:M-k)=X(1+k:M);

X_temp(M-k+1:M)=0;

P(k+1)=1/M*X_temp*S';

end

Wiener=zeros(1,N);

Wiener=inv(R)*P';

Wiener=Wiener';

%----由Wiener滤波器进行滤波处理,得到Y(n)---%

Y_temp=conv(Wiener,X);

Y=Y_temp(1:M);

%-----------计算代价函数cost-------------%

E=zeros(1,M);

E=S-Y;

cost=mean(E.^2);

%-----------一步线性预测----------------%

N_P=N;

A_P=zeros(N_P);

r_p=zeros(1,N_P);

r_p=r(2:N+1);

A_P=A_P';

A_P=inv(R)*(r_p');

Y_P_temp=conv(A_P,X);

Y_P=zeros(1,M);

Y_P(3:M)=Y_P_temp(1:M-2);

%-----------计算一步线性预测后的cost-----%

E_P=zeros(1,M);

E_P=S-Y_P;

cost_1=mean(E_P.^2);

SNR_data(i)=SNR;

cost_data(i)=cost;

cost_1_data(i)=cost_1;

end

%-代码块3:第1个表和第3个表,用这个,注释掉下面的代码块4---%

% disp('a1=');disp(a1);

% disp('a2=');disp(a2);

% disp('N=');disp(N);

% disp('Var_v=');disp(Vv_set);

% disp('SNR=');disp(SNR_data);

% disp('cost_set=');disp(cost_data);

% disp('cost_1_set=');disp(cost_1_data);

% figure;

% plot(SNR_data,cost_data);title('The relationship between cost funtion & SNR');

% xlabel('SNR(dB)');ylabel('The cost');

% figure;

% plot(SNR_data,cost_1_data);title('The relationship of SNR & cost after step1 prediction');

% xlabel('SNR(dB)');ylabel('One cost after one step prediction');

%------------------------------------------%

%-代码块1:第2个表和第4个表,用这个,注释掉上面的代码块3---%

disp('a1=');disp(a1);

disp('a2=');disp(a2);

disp('Var_v=');disp(Vv);

disp('Var_w=');disp(Vw);

disp('N=');disp(N_set);

disp('SNR=');disp(SNR);

disp('cost_set=');disp(cost_data);

disp('cost_1_set=');disp(cost_1_data);

figure;

stem(N_set,cost_data);

title('The relationship of Filter length N & the cost');

xlabel('Filter length N');ylabel('The cost');

figure;

stem(N_set,cost_1_data);

title('The relationship of Filter length N & the cost_1');

xlabel('Filter length N');ylabel('The cost_1');

%------------------------------------------%

相关文章

  • ADSP简单题一步到位

    %---------西安电子科技大学ADSP仿真作业第一题-----% %------本题目要填写四个表格,每个表...

  • 《从零开始学架构》

    架构设计原则 合适原则,合适优于业界领先 简单原则,简单优于复杂 演化原则,演化优于一步到位

  • 链表专题 简单题

    leetcode链表题,简单题也是很重要的,复杂链表题也就是简单链表题的组合。简单题:237: 这道题思路有点不一...

  • Alamofire-初探

    Alamofire的使用 和URLSession的写法有什么不一样?1.简单。一步到位省略(URLSession创...

  • 动态规划_实战2

    网易2017年合唱团 做题经验:对于一个复杂的题,若是附加条件太多,不能一步到位的解决,可以逐渐的减少附加条件,也...

  • 简单算法题

    斐波那契数列 判断一个数是否是质数(只能被1和本身整除) 判断是否是丑数丑数就是只包含质因数 2, 3, 5 的正...

  • 寻找简单题

    有投资理财意识的白领上班族,学历一般都不错。学历高学历好的人,很多有个共性,都喜欢卷,喜欢挑战性工作,希望通过一些...

  • 百度之星

    01 题 简单dfs

  • 评价?只要相关就够了

    今天聊聊evaluation,评价题是GRE逻辑题里比较简单的题,为何这么说。首先来聊聊何为评价? 简单说:加强、...

  • gcc编译的四个步骤

    以最简单的hello.c为例子 一步到位:gcc hello.c 这条命令隐含执行了(1)预处理(2)编译(3)汇...

网友评论

      本文标题:ADSP简单题一步到位

      本文链接:https://www.haomeiwen.com/subject/ehutwxtx.html