装载leleccum信号
load
leleccum
s
=
leleccum(1:3920)
%
用db1小波函数对信号进行三尺度小波分解
[C,L]=wavedec(s,2,'db1')
figure(1)
plot(s)
title('leleccum原始信号')
%
提取尺度1的低频系数
cA1
=
appcoef(C,L,'db1',1)
%用小波分解册脊框架[C.L]计算1层低频系数的近似值,小波基为db1
%
提取尺度2的低频系数
cA2
=
appcoef(C,L,'db1',2)
figure(2)
subplot(2,1,1)
plot(cA1)
title('尺州答渗度1的低频系数')
subplot(2,1,2)
plot(cA2)
title('尺度2的低频系数'举空)
%
提取尺度1的高频系数
cD1
=
detcoef(C,L,1)
%用小波分解框架[C.L]计算1层高频系数的近似值,小波基为db1
%
提取尺度2的高频系数
cD2
=
detcoef(C,L,2)
figure(3)
subplot(2,1,1)
plot(cD1)
title('尺度1的高频系数')
subplot(2,1,2)
plot(cD2)
title('尺度2的高频系数')
% RLS算法randn('seed', 0)
rand('seed', 0)
NoOfData = 8000 % Set no of data points used for training
Order = 32 % 自适应滤波权数
Lambda = 0.98 % 遗忘因子
Delta = 0.001 % 相关矩阵R的初始化
x = randn(NoOfData, 1) %高斯随机系列
h = rand(Order, 1) % 系统随机抽样
d = filter(h, 1, x) % 期望输出
% RLS算法的初始化
P = Delta * eye ( Order, Order ) %相关矩阵
w = zeros ( Order, 1 ) %滤波系数矢量的初始化
% RLS Adaptation
for n = Order : NoOfData
u = x(n:-1:n-Order+1) %延时函数
pi_ = u' * P %互相关函数
k = Lambda + pi_ * u
K = pi_'/k%增益矢量
e(n) = d(n) - w' * u %误差函数
w = w + K * e(n) %递归公式
PPrime = K * pi_
P = ( P - PPrime ) / Lambda %误差相关矩阵
w_err(n) = norm(h - w) %真实估计误差
end
% 作图表示结果
figure
plot(20*log10(abs(e))) %| e |的误差曲线
title('学习曲线')
xlabel('迭代次数')
ylabel('输出误差估计')
figure
semilogy(w_err) %作实际估计误差图
title('矢量估计误差')
xlabel('迭代次数')
ylabel('误差权矢量')
%lms 算法
clear all
close all
hold off%系统信道权数
sysorder = 5 %抽头数
N=1000%总采样次数
inp = randn(N,1)%产生高斯随机系列
n = randn(N,1)
[b,a] = butter(2,0.25)
Gz = tf(b,a,-1)%逆变换函数
h= [0.09760.28730.33600.22100.0964]%信道特性向量
y = lsim(Gz,inp)%加入噪声
n = n * std(y)/(10*std(n))%噪声信号
d = y + n%期望输出信号
totallength=size(d,1)%步长
N=60 %60节点作为训练序列
%算法的开始
w = zeros ( sysorder , 1 ) %初始化
for n = sysorder : N
u = inp(n:-1:n-sysorder+1) % u的矩阵
y(n)= w' * u%系统输出
e(n) = d(n) - y(n) %误差
if n <20
mu=0.32
else
mu=0.15
end
w = w + mu * u * e(n) %迭代方程
end
%检验结果
for n = N+1 : totallength
u = inp(n:-1:n-sysorder+1)
y(n) = w' * u
e(n) = d(n) - y(n) %误差
end
hold on
plot(d)
plot(y,'r')
title('系统输出')
xlabel('样本')
ylabel('实际输出')
figure
semilogy((abs(e))) % e的绝对值坐标
title('误差曲线')
xlabel('样本')
ylabel('误差矢量')
figure%作图
plot(h, 'k+')
hold on
plot(w, 'r*')
legend('实际权矢量','估计权矢量')
title('比较实际和估计权矢量')
axis([0 6 0.05 0.35])
closeall
%关闭当前及所有工作区中所有打开的数据库,表,和索引,并选择
1
号工作区.
clc
clear
all
%
从内存中释放所有的内存变量和数组以及所有用户笑渣自定义的菜单栏,菜单,和窗口的定义.
%信号滤波
l1=filter(b,1,c3)
%c3
8-12Hz滤波
l2=filter(b,1,c4)
%c4
8-12Hz滤波
figure
subplot(2,1,1)plot(1:1152,c3(:,2),'r',1:1152,l1(:,2),'k')
xlabel('时间')ylabel('幅度')legend('c3
滤波前','c3滤波后')
subplot(2,1,2)plot(1:1152,c4(:,2),'r',1:1152,l2(:,2),'k')
xlabel('时间')ylabel('幅度')legend('c4
滤波前','c4滤波后')
title('8-12Hz滤波后的结果')
c3_shang=-(l1.^2).*log(l1.^2)
c4_shang=-(l2.^2).*log(l1.^2)
figure
plot(1:1152,c3_shang(:,1),'r',1:1152,c3_shang(:,2),'k')
legend('左手c3','右手c3')
title('左碰御悄手c3的熵和右手c3的熵的图')
figure
plot(1:1152,c3_shang(:,1),'r',1:1152,c4_shang(:,1),'k')
legend('左手c3','左手c4')
title('左手c3的熵和左手c4的熵的图')
%由上图可以发现左手c3和右手c3的熵在600-1000点之间差别较大,因此在下面的分类中,选用600-1000之间的点进行分类
y_train=(y_train-1.5)*2
model=
svmtrain(y_train(1:90),c3(600:1000,1:90)','-s
0
-t
2
-c
1
-g
0.1'拆轮)
[predictlabel,accuracy]
=
svmpredict(y_train(91:140),c3(600:1000,91:140)',model)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)