求提取小波系数的matlab程序

求提取小波系数的matlab程序,第1张

%

装载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])

close

all

%关闭当前及所有工作区中所有打开的数据库,表,和索引,并选择

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)


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存