书上例题代码
clear all
%初始化正向权值W和反向权值V
W=rands(18,2)/2+0.5;
V=rands(5,18)/2+0.5;
%输入向量P和目标向量T
P=[0 0;
0.5 0.5;
0 0.5;
1 3;
0.5 1;
1 0.5];
T=[1 0 0 0 0;
1 0 0 0 0;
0 1 0 0 0;
0 0 1 0 0;
0 0 0 1 0;
0 0 0 0 1]';
T_out=T;
%设定学习步数为1000次
epoch=1000;
%归一化输入向量P
for i=1:6
if P(i,:)==[0 0]
P(i,:)=P(i,:);
else
P(i,:)=P(i,:)/norm(P(i,:));
end
end
%开始训练
while epoch>0
for j=1:6
%归一化正向权值W
for i=1:18
W(i,:)=W(i,:)/norm(W(i,:));
s(i)=P(j,:)*W(i,:)';
end
end
%求输出最大的神经元,即获胜神经元
temp=max(s);
for i=1:18
if temp==s(i)
count=i;
end
end
%将所有竞争层神经元的输出置为0
for i=1:18
s(i)=0;
end
%选中的神经元输出为1
s(count)=1;
%权值调整
W(count,:)=W(count,:)+0.1*[P(j,:)-W(count,:)];
W(count,:)=W(count,:)/norm(W(count,:));
V(:,count)=V(:,count)+0.1*(T(j,:)'-T_out(j,:)');
%计算网络输出
T_out(j,:)=V(:,count)';
%end
%训练次数递减
epoch=epoch - 1;
end
%训练结束
T_out
%网络回想
%网络的输入模式Pc
Pc=[0.5 1;1 3];
%初始化Pc
for i=1:2
if Pc(i,:)==[0 0]
Pc(i,:)=Pc(i,:);
else
Pc(i,:)=P(i,:)/norm(Pc(i,:));
end
end
%网络输出
Outc=[0 0 0 0 0;
0 0 0 0 0];
for j=1:2
for i=1:18
sc(i)=Pc(j,:)*W(i,:)';
end
tempc=max(sc);
for i=1:18
if tempc==sc(i)
countp=i;
end
sc(i)=0;
end
sc(countp)=1;
Outc(j,:)=V(:,countp)';
end
%回想结束
Outc
Attempted to access T(6,:); index out of bounds because size(T)=[5,6].
Error in li8_21 (line 54)
V(:,count)=V(:,count)+0.1*(T(j,:)'-T_out(j,:)');
matlab经典题目和答案
3、通过使用Matlab的反斜杠运算符“\\”,可以方便地求解这个方程组。得到的解向x=2;3;4就是方程组的解。题目:绘制函matlabfx=sinx+cosx;x=linspace0,2*pi,100;plotx,fx;答案:绘制的函数曲线图解释:这个题目要求绘制函数fx=sinx+cosx的曲线图。Matlab解决的技术问题 1、可视化图形:Matlab可以用...
安装Matlab时遇到问题
可能有以下几个原因:1.系统不兼容:Matlab需要特定的操作系统版本才能运行,如果你的电脑系统版本不符合要求,就无法安装。2.硬件不足:Matlab需要一定的计算能力和内存空间才能运行,如果你的电脑硬件不足,就无法安装或者无法正常运行。3.安装文件损坏:如果你下载的Matlab安装文件损坏或者不完整,就无法安...
大佬救命这matlab题怎么做?
【问题】常微分方程数值解问题。用预估校正Euler法,求解初值问题。求出步长h=0.1的所有点的值,并绘制图形。【求解方法】用预估校正Euler法来求解,其方法是:第一步,根据y(0)=1边界值,通过折线法计算,提供初值,即 上述式(1)也就是预报公式。第二步,根据初值,通过梯形法计算,得到较精确...
matlab函数或函数无法识别怎么解决?
如果您的 MATLAB 搜索路径有问题,请运行以下 MATLAB 命令, 然后重新启动 MATLAB。matlab函数或变量无法识别可能的原因包括:1)键入函数或变量名时的拼写错误(例如,当您要键入小写字母 l 时键入了数字1)。同时,MATLAB 的新版本提供“是不是想输入:”来解决这些拼写错误。2)函数或变量名的错误大小...
matlab的索引问题
2、方法:限制索引取值范围0到(数组长度-1),或者增加数组的长度。arr[0]=1;arr[1]=2;此数组长度为2,下标最大为1(数组下标从0开始);如果下标超出0-1这个范围就会出现索引超出界限问题。3、你可以使用MATLAB的内置函数size()来确定你的表格的大小,然后确保你的索引在这个范围内。如果你的...
运用matlab解决如下问题?
题主的第一问,即炮弹运动轨迹问题,可以这样来处理:1、根据炮弹运动轨迹的参数方程:x=v0*t*cosα y=v0*t*sinα-0.5*g*t^2 消去t,求得 y(x)的表达式,即 y=x*tan(alpha)-0.5*g*(x\/(v0*cos(alpha)))^2;2、根据已知条件,v0=0.32e3; %km\/s x=10e3; %km 使用...
matlab中转置与共轭转置的问题
在MATLAB中,矩阵的转置使用单引号表示,而共轭转置使用双引号表示。两者的操作方式不同,结果也有所不同。解释如下:矩阵的转置 在MATLAB中,对矩阵进行转置操作是相当直接的。假设你有一个矩阵A,你可以使用单引号来对其进行转置操作,即A'。转置操作是将矩阵的行变成列,列变成行。简单来说,就是沿着...
matlab的imhist的问题
在MATLAB中,imhist函数用于显示图像数据的直方图。它常用于图像处理和分析中,帮助我们理解图像的统计特性。若在使用此函数时遇到问题,可能的解决方法通常与编程代码的错误或是数据的输入有关。以下是关于imhist函数的一些 一、函数基本用途:MATLAB中的imhist函数主要用于展示图像直方图,可以直观显示图像的灰度...
MATLAB运行错误,怎么解决?
可以在matlab中查看int的用法。MATLAB程序运行时出现错误找出错误操作方法 对于初学者来说,开发MATLAB程序时,经常回出现诸多错误。MATLAB程序运行时出现错误后,可通过适当的方法定位和查找,操作步骤如下所列。下述方法描述中,采用如下实例程序进行说明;2.MATLAB程序运行错误后,切换到MATLAB命令行中,观察...
如何用matlab解决这个问题?
1、明确线性规划问题的函数式,即 max 0.6x+0.8y %超市获得最大利润 st. x+y≤2 %问题不应该是x+y>2,如是x+y=2.5 x≤1,y≤1.5 2、使用fmincon函数来求解其线性规划问题。即 [k,fval] = fmincon(@(k) myfun(k),k0,[],[],[],[],lb,ub,@(k) mycon(k));这里,x=...