Matlab镜像建模产生啸叫信号,【!!!】将一个信号生成带有反馈啸叫的信号

本帖最后由 wx_K109bN7b 于 2015-5-30 13:08 编辑

g=100; % 统计仿真次数为g

N=1024; % 输入信号抽样点数N

k=128; % 时域抽头LMS算法滤波器阶数

pp=zeros(g,N-k); % 将每次独立循环的误差结果存于矩阵pp中,以便后面对其平均

u=0.0002;

for q=1:g

t=1:N;

a=1;

s=a*sin(0.05*pi*t); % 输入单频信号s

figure(1);

subplot(311)

plot(t,real(s)); % 信号s时域波形,real实数部分

title('信号s时域波形');

xlabel('n');

ylabel('s');

axis([0,N,-a-1,a+1]); % 设置坐标轴范围

xn=awgn(s,5); % 加入均值为零的高斯白噪声,信噪比为5dB

% 设置初值

y=zeros(1,N); % 输出信号y

y(1:k)=xn(1:k); % 将输入信号xn的前k个值作为输出y的前k个值

w=zeros(1,k); % 设置抽头加权初值

e=zeros(1,N); % 误差信号

% 用LMS算法迭代滤波

for i=(k+1):N

XN=xn((i-k+1):(i));

y(i)=w*XN';

e(i)=s(i)-y(i);

w=w+u*e(i)*XN;

end

pp(q,:)=(e(k+1:N)).^2;

end

subplot(312)

plot(t,real(xn)); % 信号s时域波形

title('信号s加噪声后的时域波形');

subplot(313)

plot(t,real(y)); % 信号s时域波形

title('自适应滤波后的输出时域波形');

for b=1:N-k

bi(b)=sum(pp(:,b))/g; % 求误差的统计平均

end

figure(2); % 算法收敛曲线

t=1:N-k;

plot(t,bi,'r');

hold on % 将每次循环的图形显示结果保存下来

上面是自适应滤波器LMS消除信号中掺杂的高斯白信号的代码。

上面这个代码xn是对信号s添加高斯白噪声后的信号,但是我现在想要研究关于反馈啸叫的问题,也就是想在这个代码的基础上,添加一个反馈路径,可以产生反馈啸叫。(想让xn是发生反馈啸叫情况后的信号)但是水平实在太差。。。。求助大神帮忙。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值