求如何编写matlab程序

求如何编写matlab程序,第1张

(1)代码如下:

clc

clear

f = inline('0*(t<0)+t.*(t>=0&t<2)+2*(t>=2&t<3)-1*(t>=3&t<=5)+0*(t>5)', 't')

figure(1)

t1=[0:0.01:5]

x1=f(t1)

plot(t1,x1)

set(gca, 'xtick', [0:1:5])

set(gca, 'ytick', [-1:1:2])

axis([0 5 -1.5 2.5])

xlabel('t')

title('x(t)')

生成x(t)图像如下:

(2)因为档世含x(t)的t取值为0≤t≤5,x(0.5t)时0≤0.5t≤5 ⇒ 0≤t≤10

x(2-0.5t)时0≤2-0.5t≤行笑5⇒-6≤t≤4,综上取-6≤t≤10

代码如下:

figure(2)

t2=[-6:0.01:10]

subplot(3,1,1)

x21=f(t2)

plot(t2,x21)

set(gca, 'xtick', [-6:1:10])

set(gca, 'ytick', [-1:1:2])

axis([-6 10 -1.5 2.5])

xlabel('t')

title('x(t)')

subplot(3,1,2)

x22=f(0.5*t2)

plot(t2,x22)

set(gca, 'xtick', [-6:1:10])

set(gca, 'ytick', [-1:1:2])

axis([-6 10 -1.5 2.5])

xlabel('t')

title('x(0.5t)')

subplot(3,1,3)

x23=f(2-0.5*t2)

plot(t2,x23)

set(gca, 'xtick', [-6:1:10])

set(gca, 'ytick', [-1:1:2])

axis([-6 10 -1.5 2.5])

xlabel('t')

title('x(2-0.5t)')

生返伏成x(t)、x(0.5t)和x(2-0.5t)图像如下:

(3)x(t)的奇分量为1/2[x(t)-x(-t)],偶分量为1/2[x(t)+x(-t)]

同样0≤t≤5,x(-t)时0≤-t≤5 ⇒ -5≤t≤0,综上取-5≤t≤5

代码如下:

figure(3)

t3=[-5:0.01:5]

xo=0.5*(f(t3)-f(-t3))% 奇分量

xe=0.5*(f(t3)+f(-t3))% 偶分量

subplot(2,1,1)

plot(t3,xo)

set(gca, 'xtick', [-5:1:5])

set(gca, 'ytick', [-1:0.5:1])

axis([-5 5 -1.5 1.5])

xlabel('t')

title('x(t)奇分量')

subplot(2,1,2)

plot(t3,xe)

set(gca, 'xtick', [-5:1:5])

set(gca, 'ytick', [-1:0.5:1])

axis([-5 5 -1.5 1.5])

xlabel('t')

title('x(t)偶分量')

生成x(t)的奇偶分量图像如下:

望采纳~

x=[1 3 5 -1]'

n=length(x)

for i=1:n

if x(i)>2

y(i)=fun1(x(i))

else

y(i)=fun2(x(i))

end

end

y

这是主皮明程燃升告序笑拿。下面两个分别保存成M文件

function y = fun1(x)

y=x*x+1

end

function y = fun2(x)

y=x-1

end

clear

fs=1000%采样频率1000hz

N=500%采样点数

t=(0:1:N-1)/fs

f=10%正弦信号频率10hz

x=sin(2*pi*f*t)+randn(size(t))%被随机信号干扰的正弦信号

b = fir1(31,0.5) %由b = fir1(31,0.5)产生32阶滤波器系数

n = 0.1*randn(1,500)% 通过以上滤波系统所加入的噪声

d = filter(b,1,x)+n % 通过滤波器后的期望信号

delta = 0.005 % 设置自适应滤波器其中一个步长因子为0.005

ha = adaptfilt.lms(32,delta)%求出系统的滤波器系数

[y,e] = filter(ha,x,d)

delta0=0.001 %另一个步长因子为0.001作对比

ha=adaptfilt.lms(32,delta0)

[y0,e0]=filter(ha,x,d)

m=1:500

figure(1)

plot(m,x,'g')

figure(2)

plot(m,e,'r',m,e0)

legend('delta=0.001','delta=0.005')

% subplot(2,1,1)

% plot(m,e0)

%

以上是基本的LMS算法

% 滤波型LMS算法滤波

M = 20 % 运行次数

N = 1000 % 信号的长度祥和

n = 0:N-1

s = sin(2*pi*n/10)% 初始信号

u = s + 0.36*randn(1,N) % 叠加噪声后的信号

% 信号叠加噪声波形图

figure(1)

plot(n,u)

title('信号叠加噪声波形图')

xlabel('n')ylabel('u')

y = zeros(1,N)% 初始化经过自适应滤波器后的信号为零向量

w = zeros(1,N)% 初始化自适应滤波器的权向量为零向量

e = zeros(N) % 初始化误差e(n)的为零向量

a = zeros(1,N)% 初始化前向滤波器的权向量为零向量

vare = zeros(N) % 初始化误差的平方e(n)^2的为零向量

estd = zeros(N) % 初始化均方误差E{e(n)^2}的为零向量

vare1 = ones(1,N) % 初始化误差的平方e(n)^2的为1向量

estd1 = ones(1,N) % 初始化均方误差E{e(n)^2}的为1向量

k = 10% 自适应滤波器的阶数

e1 = zeros(1,N) % 初始化前向预测误差e1为零向量

e2 = zeros(1,N) % 初始化滤波向量e为零向量

y(1:k) = u(1:k)

mu0 = 0.0065 % 初始更新步长因子败宴岁

% 初始化前向滤波器的权向量

a(1:11) = [ 0.1642 , 0.1341 , 0.0529,-0.0624 , -0.1586 ,-0.1932 , -0.1555 , -0.0599 , 0.0584, 0.1229 , 0.1106]

% 滤波型LMS算法滤察睁波

for j = (k + 1):M

u = s + 0.36*randn(1,N) % 叠加噪声后的信号

for n=(k+2):N

mu = mu0/(1 + (n/100)) % 先搜索后收敛步长因子

e(j,n) = s(n) - w((n-1):(n+9)) * u(n:-1:(n-10))' % 误差

e1(n) = u(n) + a((n-10):n)*u((n-1):-1:(n-11))'% 前向预测误差

e2(n) = e(j,n) + a((n-10):n)*e(j,(n:-1:(n-10)))' % 滤波

w(n:(n+10)) = w((n-1):(n+9)) + mu*e1(n:-1:(n-10))*e2(n) % 更新自适应滤波器的权向量

y(n) = w((n):(n+10)) * u((n):-1:(n-10))' % 经过自适应滤波器后的信号

vare(j,n) =e(j,n)^2 % 误差的平方e(n)^2

estd(j,n) = vare(j,(1:n))*vare(j,(1:n))'/n% 均方误差E{e(n)^2}

end

end

vare1 = (vare1*vare)/M% 统计平均意义下e(n)^2

estd1 = (estd1*estd)/M% 统计平均意义下学习曲线

% 滤波型LMS自适应滤波输出

figure(2)

plot(y)

title('mu = 0.0065时滤波型LMS自适应滤波输出')

xlabel('n')ylabel('y')

% 滤波型LMS自适应滤波器的e(n)^2的曲线

figure(3)

plot(vare1)

title('滤波型LMS自适应滤波器的e(n)^2的曲线 ')

xlabel('n')ylabel('e(n)^2')

% 滤波型LMS自适应滤波器的学习曲线图

figure(4)

plot(estd1)

title('滤波型LMS自适应滤波器的学习曲线图 ')

xlabel('n')ylabel('E[e(n)^2]')

希望可以帮到你


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存