導航:首頁 > 源碼編譯 > matlablm演算法

matlablm演算法

發布時間:2022-10-03 23:08:02

Ⅰ 請問您可不可以提供一個LMP演算法,也就是p范數LMS演算法的matlab程序呀我自己編的沒法收斂…

%% 初始化
clc,clear all;
mu=0.05; % 步長
N=16; % 信道時域系數個數
input_signal_variance=1; % 輸入信號方差
noise_variance=10^-3; % 雜訊方差
inter=500; % 迭代次數分別為500
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%前500次迭代
w=zeros(N,1); % 初始時刻,稀疏信道脈沖響應
w_initial=w;
w_initial(5,1)=1; % 第5個抽頭值為1
w_opt=w_initial; % 記錄所要得到的稀疏系數向量w~(n),便於求MSD,MSE
%% 產生零均值,方差為1/10^-3的高斯雜訊x(n)和v(n)
% 產生高斯分布的N*1的輸入信號x(n)
b=randn(N,1);
b=b/std(b);
b=b-mean(b);
c=0;
d=sqrt(input_signal_variance);
x=c+d*b;

% 產生高斯分布的雜訊v(n)
t=randn(inter_3,1);
t=t/std(t);
t=t-mean(t);
c=0;
f=sqrt(noise_variance);
v=c+f*t;
%% 未迭代
sum=0;
MSD=;
inter=0;
for n=1:N %求MSD
error=(abs(w(n)-w_opt(n)))^2;
sum=sum+error;
end

MSD(inter+1)=sum;

%% 開始迭代--LMS
for inter=1:inter
y=w'*x+v(inter); % 輸出信號y(n)
e=w_opt'*x-y; % 誤差
w=w+mu*e*x; % 更新公式

sum=0;
for n=1:N %求MSD
error=(abs(w(n)-w_opt(n)))^2;
sum=sum+error;
end

MSD(inter+1)=sum;

end
inter=0:inter;
plot(inter,MSD);
axis();
grid on;
xlabel('interation');
ylabel('MSD');

Ⅱ MATLAB 中 LM演算法的函數是什麼

http://www.mathworks.com/matlabcentral/fileexchange/16063-lmfsolve-m-levenberg-marquardt-fletcher-algorithm-for-nonlinear-least-squares-problems

Calling of the function is rather simple:
[x,ssq,cnt] = LMFsolve(Equations,X0); % or
[x,ssq,cnt] = LMFsolve(Equations,X0,'Name',Value,...); % or
[x,ssq,cnt] = LMFsolve(Equations,X0,Options) % .

去看吧
好像沒有二維的.
你最好看看這個函數,根據LM演算法的意義修改一下

Ⅲ 請教MATLAB中的LMI求解問題

1.因為令F=K*X1後,若所得不等式中中只有X1,F,則該不等式為LMI;若不等式中出現X1,F,K三個變數,則不等式變為受等式約束的LMI形式,無法直接通過Matlab求解。
2.不等式中出現X1^-1時,可以採取如下處理方法:
a)若X1^-1為矩陣對角元素,則可根據不等式-X1^-1<=X1-2I將原矩陣不等式替換成LMI形式;(此方法簡便易行,但保守性增大)
b)利用錐補線性化演算法(cone complementary linearisation),可參考以下文獻
郭亞鋒, 李少遠. 網路控制系統的H∞狀態反饋控制器設計. 控制理論與應用
G. Zhou, D. Wang, P. Chen, X. Zhao. Guaranteed Cost Control For Networked Control System With Interval Time-varying Delay. //Proceedings of the 21st Chinese Control and Decision Conference

Ⅳ MATLAB實現LMS學習演算法

clc;
clear all;
load msesample;
n1=length(x1);
n2=length(x2);
x=[x1;x2];
e=ones(length(x),1);
y=[e x];
b=e;
%b=rand(length(x),1);
yita=1;
eps=0.01;
yy=inv(y'*y)*y';
result=yy*b;
for i=n2:length(x)
y(i,:)=y(i,:).*(-1);
end
a=[1;2;1];
an=zeros(3,100);
an(:,1)=a;
flat=zeros(length(x),1);
n=1;
while(n<=100)
for i=1:length(x)
if y(i,:)*an(:,n)<=b(i)
an(:,(n+1))=an(:,n)+y(i,:)'*(b(i)-y(i,:)*an(:,n))*yita/n;
end
end
if abs(an(:,(n+1))-an(:,n))<=eps
break;
else
n=n+1;
end
end
n
w=an(:,n)
ne=0;
for i=1:length(x)
if y(i,:)*w<b(i)
ne=ne+1;
end
end
ne
pe=ne/length(x)
subplot(1,2,1)
plot(x1(:,1),x1(:,2),'bo',x2(:,1),x2(:,2),'ro');
hold on
syms xa xb;
g=w(1)+w(2)*xa+w(3)*xb;
ezplot(g);
title('最小均方誤差判決')
legend('第一類樣本','第二類樣本')
gtext(strcat('錯誤率為:',num2str(pe)),'Fontsize',8)
subplot(1,2,2)
hold on
i=1:n;
plot(i,an(:,i));
title('權向量')
xlabel('迭代次數')
ylabel('權向量取值')

Ⅳ Matlab如何做空間計量回歸模型LM檢驗

x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]';
X=[ones(16,1) x]; 增加一個常數項
Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]';
[b,bint,r,rint,stats]=regress(Y,X)
得結果:b = bint =
-16.0730 -33.7071 1.5612
0.7194 0.6047 0.8340
stats = 0.9282 180.9531 0.0000
即對應於b的置信區間分別為[-33.7017,1.5612]、[0.6047,0.834]; r2=0.9282, F=180.9531, p=0.0000
p<0.05, 可知回歸模型 y=-16.073+0.7194x 成立.

這個是一元的,如果是多元就增加X的行數!

Ⅵ matlab中trainlm演算法和trainbr中mu值是什麼意思

變數mu確定了學習是根據牛頓法還是梯度法來完成,下式為更新參數的L-M規則:

% jj = jX * jX
% je = jX * E
% dX = -(jj+I*mu) \ je
隨著mu的增大,LM的項jj可以忽略。因此學習過程主要根據梯度下降即mu/je項,只要迭代使誤差增加,mu也就會增加,直到誤差不再增加為止,但是,如果mu太大,則會使學習停止,當已經找到最小誤差時,就會出現這種情況,這就是為什麼當mu達到最大值時要停止學習的原因。

Ⅶ 如何用matlab實現頻域塊LMS演算法

先對t離散化,然後FFT,再畫個幅頻和相頻就可以了。
不過貌似你這個式子有點問題,randn產生1*1024的高斯雜訊已經指定了s的維數了,所以t必須去1024個離散值,限定了t的取值了。
你可以參考下面的程序,建議你看懂之後自己編一下。
這是對sin(x)求幅頻相頻
%用fft求幅頻相頻
clc;%清空
clearall;%清除所有變數
closeall;%關閉所有窗口
A=10;%振幅
fw=50;%固有頻率
phi=pi/3;%相位
step=1000;
t=0:1/step:10*pi;%時間t
y=A*sin(2*pi*fw*t+phi);%正弦函數y
f=step*(0:256)/512;%頻率
subplot(3,1,1);%三行一列第一幅圖
plot(t,y);%繪制圖形
xlabel('t/s','fontsize',13);%橫坐標顯示t/s,字型大小13
ylabel('y','fontsize',13);%縱坐標顯示y,字型大小13
title('正弦函數曲線','fontsize',13);%顯示標題
Y=fft(y,512);%對y進行傅里葉變換
subplot(3,1,2);%三行一列第二幅圖
plot(f,abs(Y(1:257)));%繪制圖形
xlabel('f/Hz','fontsize',13);%橫坐標顯示f/Hz,字型大小13
ylabel('幅值','fontsize',13);%縱坐標顯示幅值,字型大小13
title('幅頻特性曲線','fontsize',13);%顯示標題
[value,index]=max(abs(Y));%將abs(Y)最大值點的橫坐標、縱坐標分別賦給
value和index
text(f(index),value,sprintf('maxpiont=(%f,%f)',f(index),value),'fonts
ize',13);%顯示最大值點坐標
subplot(3,1,3);%三行一列第三幅圖
plot(f,angle(Y(1:257))*180/pi);%繪制圖形
xlabel('f/Hz','fontsize',13);%橫坐標顯示f/Hz,字型大小13
ylabel('相位/°','fontsize',13);%縱坐標顯示相位/°,字型大小13
title('相位特性曲線','fontsize',13);%顯示標題

Ⅷ 基於MATLAB的神經網路BP演算法改進LM演算法的交通流量的源代碼!

給你推薦一本書《神經網路理論與MATLAB7實現》,上面有LM演算法以及N多的代碼

Ⅸ matlab如何實現蒙特卡洛演算法

1、打開MATLAB軟體,如圖所示,輸入一下指令。

Ⅹ MATLAB中訓練LM演算法的BP神經網路

1.初始權值不一樣,如果一樣,每次訓練結果是相同的
2.是
3.在train之前修改權值,IW,LW,b,使之相同
4.取多次實驗的均值
一點淺見,僅供參考

訓練誤差是否降到一定范圍內,比如1e-3,
將訓練樣本回代結果如何,
訓練樣本進行了預處理,比如歸一化,而測試樣本未進行同樣的處理

這樣的歸一化似有問題,我也認為「測試數據的歸一化也用訓練數據歸一化時得出的min和max值」,
請參考這個帖子http://www.ilovematlab.cn/thread-27021-1-1.html
測試數據帶入訓練好的神經網路誤差當然不會達到1e-5,這是預測啊。
但將訓練數據帶入誤差必然是1e-5,演算法終止就是因為達到這個誤差才終止,這個誤差是由訓練數據的輸入、輸出以及神經網路的權值、激活函數共同決定的,神經網路訓練完後,權值、激活函數定了,同樣的數據再代入神經網路,誤差會不等於1e-5?
第二個問題:不可能每個值都達到1e-5,1e-5是MSE(mean square error),它們的平方和除以總數再開方,mse(E)必為1e-5
另外,LM演算法雖然訓練最快,但是預測精度一般不好,不如gdm,gdx

閱讀全文

與matlablm演算法相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:578
python員工信息登記表 瀏覽:376
高中美術pdf 瀏覽:160
java實現排列 瀏覽:512
javavector的用法 瀏覽:981
osi實現加密的三層 瀏覽:231
大眾寶來原廠中控如何安裝app 瀏覽:913
linux內核根文件系統 瀏覽:242
3d的命令面板不見了 瀏覽:525
武漢理工大學伺服器ip地址 瀏覽:148
亞馬遜雲伺服器登錄 瀏覽:524
安卓手機如何進行文件處理 瀏覽:70
mysql執行系統命令 瀏覽:929
php支持curlhttps 瀏覽:142
新預演算法責任 瀏覽:443
伺服器如何處理5萬人同時在線 瀏覽:250
哈夫曼編碼數據壓縮 瀏覽:424
鎖定伺服器是什麼意思 瀏覽:383
場景檢測演算法 瀏覽:616
解壓手機軟體觸屏 瀏覽:348