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])
%lms算法源程序clear all
close all
%channel system order
sysorder = 5
% Number of system points
N=2000
inp = randn(N,1)
n = randn(N,1)
[b,a] = butter(2,0.25)
Gz = tf(b,a,-1)
%This function is submitted to make inverse Z-transform (Matlab central file exchange)
%The first sysorder weight value
%h=ldiv(b,a,sysorder)'
% if you use ldiv this will give h :filter weights to be
h= [0.0976
0.2873
0.3360
0.2210
0.0964]
y = lsim(Gz,inp)
%add some noise
n = n * std(y)/(10*std(n))
d = y + n
totallength=size(d,1)
%Take 60 points for training
N=60
%begin of algorithm
w = zeros ( sysorder , 1 )
for n = sysorder : N
u = inp(n:-1:n-sysorder+1)
y(n)= w' * u
e(n) = d(n) - y(n)
% Start with big mu for speeding the convergence then slow down to reach the correct weights
if n <20
mu=0.32
else
mu=0.15
end
w = w + mu * u * e(n)
end
%check of results
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('System output')
xlabel('Samples')
ylabel('True and estimated output')
figure
semilogy((abs(e)))
title('Error curve')
xlabel('Samples')
ylabel('Error value')
figure
plot(h, 'k+')
hold on
plot(w, 'r*')
legend('Actual weights','Estimated weights')
title('Comparison of the actual weights and the estimated weights')
axis([0 6 0.05 0.35])
% RLS 算法
randn('seed', 0)
rand('seed', 0)
NoOfData = 8000 % Set no of data points used for training
Order = 32% Set the adaptive filter order
Lambda = 0.98% Set the forgetting factor
Delta = 0.001% R initialized to Delta*I
x = randn(NoOfData, 1) % Input assumed to be white
h = rand(Order, 1) % System picked randomly
d = filter(h, 1, x) % Generate output (desired signal)
% Initialize 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
% Plot results
figure
plot(20*log10(abs(e)))
title('Learning Curve')
xlabel('Iteration Number')
ylabel('Output Estimation Error in dB')
figure
semilogy(w_err)
title('Weight Estimation Error')
xlabel('Iteration Number')
ylabel('Weight Error in dB')
a=image_meana=double(a)
[dep,wide]=size(a)
new_image=ones(size(a))
for i=3:dep-2
for j=3:wide-2
new_image(i,j)=median([a(i-2,j-2) a(i-2,j-1) a(i-2,j) a(i-2,j+1) a(i-2,j+2) a(i-1,j-2) a(i-1,j-1) a(i-1,j) a(i-1,j+1) a(i-1,j+2) a(i,j-2) a(i,j-1) a(i,j) a(i,j+1) a(i,j+2) a(i+1,j-2) a(i+1,j-1) a(i+1,j) a(i+1,j+1) a(i+1,j+2) a(i+2,j-2) a(i+2,j-1) a(i+2,j) a(i+2,j+1) a(i+2,j+2)])
end
end
for i=3:dep-2 %处理每一行的最头上两个和最边上凳稿哗2
new_image(i,1)=new_image(i,3)
new_image(i,2)=new_image(i,3)new_image(i,wide)=new_image(i,wide-2)
new_image(i,wide-1)=new_image(i,wide-2)
end
new_image(1,:)=new_image(3,:)%把第三行的所有元素赋值给第一行枣行
new_image(2,:)=new_image(3,:)
new_image(dep,:)=new_image(dep-2,:)%把倒数第二行的所有元素值赋给最后一行
new_image(dep-1,:)=new_image(dep-2,:)
figure
imshow(uint8(new_image))
第敬友一行是我接着我做的东西的上面来的,表示读入图片,你可以换成I=imread('F:\exam\Matlab\shibie\1.jpg')等,根据情况读入图片就行了。最后一行我是把它进行了强制转换,你也可以试试不转换看能不能显示。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)