📄 jacobi_pinv_1116.m
字号:
%将输出格式定为long
format long
%清除command window 中的所有字
clc;
%清除变量内存
clear;
%在区间[-1.0,1.0]内以0.01的间隔采样
xi=-1.0:0.01:1.0;
%转置共扼
xi=xi';
%仿真函数
% yi=1./(xi.^2+1)+log10(xi+2)+cos(4*xi);
% yi=cos(4*xi);
yi=sin(4*xi);
%计算yi的长度
numSMP=length(yi);
%隐层神经元与输出层神经元之间的权重个数
numW=8;
%通过隐层神经元的激励函数计算矩阵值
X(:,1)=1+0*xi;
X(:,2)=2*xi;
X(:,3)=4*xi.^2-1;
X(:,4)=8*xi.^3-4*xi;
X(:,5)=16*xi.^4-12*xi.^2+1;
X(:,6)=32*xi.^5-32*xi.^3+6*xi;
X(:,7)=64*xi.^6-80*xi.^4+24*xi.^2-1;
X(:,8)=128*xi.^7-192*xi.^5+80*xi.^3-8*xi;
% X(:,9)=256*xi.^8-448*xi.^6+240*xi.^4-40*xi.^2+1;
% X(:,10)=512*xi.^9-1024*xi.^7+672*xi.^5-160*xi.^3+10*xi;
xiM=X;
%计算参数eta
eta=1.2/trace(xiM'*xiM);
%创建一个 numW×1 的零矩阵
W=zeros(numW,1);
%把码表归零,开始计时
tic
%权值修正
W=pinv(xiM)*yi;
%计算神经网络的误差
errall=0.5*[norm(xiM*W-yi)]^2
%把码表停止,并输出计时的结果
toc
%在command window 中显示时间
time=toc
%计算均差
errall_div_numSMP=errall/numSMP
%计算2倍均差
double_errall_div_numSMP=2*errall/numSMP
%在command window 中显示权值信息
W
%在区间[-0.995,1.005]内以0.01的间隔采样
xitest=-0.995:0.01:1.005;
%转置共扼
xitest=xitest';
%仿真函数
% yitest=1./(xitest.^2+1)+log10(xitest+2)+cos(4*xitest);
% yitest=cos(4*xitest);
yitest=sin(4*xitest);
Xtest(:,1)=1+0*xitest;
Xtest(:,2)=2*xitest;
Xtest(:,3)=4*xitest.^2-1;
Xtest(:,4)=8*xitest.^3-4*xitest;
Xtest(:,5)=16*xitest.^4-12*xitest.^2+1;
Xtest(:,6)=32*xitest.^5-32*xitest.^3+6*xitest;
Xtest(:,7)=64*xitest.^6-80*xitest.^4+24*xitest.^2-1;
Xtest(:,8)=128*xitest.^7-192*xitest.^5+80*xitest.^3-8*xitest;
% Xtest(:,9)=256*xitest.^8-448*xitest.^6+240*xitest.^4-40*xitest.^2+1;
% Xtest(:,10)=512*xitest.^9-1024*xitest.^7+672*xitest.^5-160*xitest.^3+10*xitest;
%计算并显示神经网络的校验误差
errall_test=0.5*[norm(Xtest*W-yitest)]^2
%计算并显示较验均差
errall_test_div_numSMP=(errall_test)/numSMP
%计算并显示2倍较验均差
double_errall_test_div_numSMP=(2*(errall_test))/numSMP
i=1:numSMP;
figure('Name','trained points','NumberTitle','off')
plot(xi,yi,'-',xi,xiM*W,'--')
% i=1:numSMP;
% figure('Name','untrained points','NumberTitle','off')
% plot(i,yitest,'-',i,Xtest*W,'--')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -