现代信号处理大作业题目+答案
时间:2025-04-05
时间:2025-04-05
研究生“现代信号处理”课程大型作业
(以下四个题目任选三题做)
1. 请用多层感知器(MLP)神经网络误差反向传播(BP)算法实现异或问题(输入为,并画出学习曲线。其中,非线性函数X [0 0;0 1;1 0;1 1]T,要求可以判别输出为0或1)采用S型Logistic函数。
2. 试用奇阶互补法设计两带滤波器组(高、低通互补),进而实现四带滤波器组;并画出其频响。滤波器设计参数为:Fp=1.7KHz, Fr=2.3KHz, Fs=8KHz, Armin≥70dB。
3. 根据《现代数字信号处理》(姚天任等,华中理工大学出版社,2001)第四章附录提供的数据(pp.352-353),试用如下方法估计其功率谱,并画出不同参数情况下的功率谱曲线: 1) Levinson算法 2) Burg算法 3) ARMA模型法 4) MUSIC算法
4. 图1为均衡带限信号所引起失真的横向或格型自适应均衡器(其中横向FIR系统长M=11), 系统输入是取值为±1的随机序列x(n),其均值为零;参考信号d(n) x(n 7);信道具有脉冲响应:
2 (n 2) 1
)] n 1,2,3 [1 cos(
h(n) 2W
0 其它
式中W用来控制信道的幅度失真(W = 2~4, 如取W = 2.9,3.1,3.3,3.5等),且信道受到均
2
值为零、方差 v 0.001(相当于信噪比为30dB)的高斯白噪声v(n)的干扰。试比较基
于下列几种算法的自适应均衡器在不同信道失真、不同噪声干扰下的收敛情况(对应于每一种情况,在同一坐标下画出其学习曲线): 1) 横向/格-梯型结构LMS算法 2) 横向/格-梯型结构RLS算法 并分析其结果。
图1 横向或格-梯型自适应均衡器
参考文献
[1] 姚天任, 孙洪. 现代数字信号处理[M]. 武汉: 华中理工大学出版社, 2001 [2] 杨绿溪. 现代数字信号处理[M]. 北京: 科学出版社, 2007
[3] S. K. Mitra. 孙洪等译. 数字信号处理——基于计算机的方法(第三版)[M]. 北京: 电子工
业出版社, 2006
[4] S.Haykin, 郑宝玉等译. 自适应滤波器原理(第四版)[M].北京: 电子工业出版社, 2003 [5] J. G. Proakis, C. M. Rader, F. Y. Ling, etc. Algorithms for Statistical Signal Processing [M].
Beijing: Tsinghua University Press, 2003
一、请用多层感知器(MLP)神经网络误差反向传播(BP)算法实现异或问题(输入为X [0 0;0 1;1 0;1 1]T,要求可以判别输出为0或1),并画出学习曲线。其中,非线性函 数采用S型Logistic函数。
1、原理:
反向传播(BP)算法:
(1)、多层感知器的中间隐层不直接与外界连接,其误差无法估计。
(2)、反向传播算法:从后向前(反向)逐层“传播”输出层的误差,以间接算出隐层误差。分两个阶段:
正向过程:从输入层经隐层逐层正向计算各单元的输出
反向过程:由输出层误差逐层反向计算隐层各单元的误差,并用此误
差修正前层的权值。 2、流程图:
j
3、程序:
%使用了3层结构,第二层隐藏层4个单元。2,3层都使用Logisitic函数。 %训练xor数据。 function mlp()
f= fopen('XOR.txt');
A = fscanf(f, '%g',[3 inf]); A = A;
p = A(1:2, :)';%训练输入数据 t = A(3, :)';%desire out
[train_num , input_scale]= size(p) ;%规模 fclose(f);
accumulate_error=zeros(1,3001); alpha = 0.5;%学习率
threshold = 0.005;% 收敛条件 ∑e^2 < threshold wd1=0; wd2=0; bd1=0; bd2=0; circle_time =0;
hidden_unitnum = 4; %隐藏层的单元数
w1 = rand(hidden_unitnum,2);%4个神经元,每个神经元接受2个输入 w2 = rand(1,hidden_unitnum);%一个神经元,每个神经元接受4个输入 b1 = rand(hidden_unitnum,1); b2 = rand(1,1); while 1
temp=0;
circle_time = circle_time +1; for i=1:train_num
%前向传播
a0 = double ( p(i,:)' );%第i行数据 n1 = w1*a0+b1;
a1 = Logistic(n1);%第一个的输出 n2 = w2*a1+b2;
a2 = Logistic(n2);%第二个的输出 a = a2;
%后向传播敏感性 e = t(i,:)-a;
accumulate_error(circle_time) = temp + abs(e)^2;
temp=accumulate_error(circle_time); s2 = F(a2)*e; %输出层delta值 s1 = F(a1)*w2'*s2;%隐层delta值 %修改权值
wd1 = alpha .* s1*a0'; wd2 = alpha .* s2*a1'; w1 = w1 + wd1; w2 = w2 + wd2; bd1 = alpha .* s1; bd2 = alpha .* s2; b1 = b1 + bd1;
b2 = b2 + bd2; end;%end of for
if accumulate_error(circle_time) <= threshold| circle_time>3001 break;
end;%end of if end;%end of while
plot(accumulate_error,'m'); grid;
xlabel('学习次数') ylabel('误差')
disp(['计算误差 = ',num2str(accumulate_error(circle_time))] ) ; disp(['迭代次数 = ',num2str(circle_time)]); %测试
a0 = double ([0 0]'); n1 = w1*a0+b1; a1 = Logistic(n1); n2 = w2*a1+b2; a2 = Logistic(n2); a = a2;
disp(['0 0 = ',num2str(a)]); a0 = double ([0 1]'); n1 = w1*a0+b1;
%then
a1 = Logistic(n1); n2 = w2*a1+b2; a2 = Logistic(n2); a = a2;
disp(['0 1 = ',num2str(a)]); a0 = double ([1 0]'); n1 = w1*a0+b1; a1 = Logistic(n1); n2 = w2*a1+b2; a2 = Logistic(n2); a = a2;
disp(['1 0 = ',num2str(a)]); a0 = double ([1 1]'); n1 = w1*a0+b1; a1 = Logistic(n1); n2 = w2*a1+b2; a2 = Logistic(n2); a = a2;
disp(['1 1 = ',num2str(a)]); m=0;
%---------------------------------------------------------- function [a]= Logistic(n) a = 1./(1+exp(-n));
%---------------------------------------------------------- function [result]= F(a) [r,c] = size(a); result = zeros(r,r); fo …… 此处隐藏:7283字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:519-东北财经大学网络教育