MATLAB里出现Subscript indices must either be real positive integers or logicals.% CMAC逼近sin(t)函数% 未进行Hash Coding杂凑% 作者:nuaazdh %时间:2012年2月23日16:53:28 clear all; close all; clc; t=[0:2*pi/360:2*pi];% 自变量t y
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/10 14:44:03
![MATLAB里出现Subscript indices must either be real positive integers or logicals.% CMAC逼近sin(t)函数% 未进行Hash Coding杂凑% 作者:nuaazdh %时间:2012年2月23日16:53:28 clear all; close all; clc; t=[0:2*pi/360:2*pi];% 自变量t y](/uploads/image/z/13444847-71-7.jpg?t=MATLAB%E9%87%8C%E5%87%BA%E7%8E%B0Subscript+indices+must+either+be+real+positive+integers+or+logicals.%25+CMAC%E9%80%BC%E8%BF%91sin%28t%29%E5%87%BD%E6%95%B0%25+%E6%9C%AA%E8%BF%9B%E8%A1%8CHash+Coding%E6%9D%82%E5%87%91%25+%E4%BD%9C%E8%80%85%EF%BC%9Anuaazdh+%25%E6%97%B6%E9%97%B4%EF%BC%9A2012%E5%B9%B42%E6%9C%8823%E6%97%A516%3A53%3A28+clear+all%3B+close+all%3B+clc%3B+t%3D%5B0%3A2%2Api%2F360%3A2%2Api%5D%3B%25+%E8%87%AA%E5%8F%98%E9%87%8Ft+y)
MATLAB里出现Subscript indices must either be real positive integers or logicals.% CMAC逼近sin(t)函数% 未进行Hash Coding杂凑% 作者:nuaazdh %时间:2012年2月23日16:53:28 clear all; close all; clc; t=[0:2*pi/360:2*pi];% 自变量t y
MATLAB里出现Subscript indices must either be real positive integers or logicals.
% CMAC逼近sin(t)函数
% 未进行Hash Coding杂凑
% 作者:nuaazdh
%时间:2012年2月23日16:53:28
clear all;
close all;
clc;
t=[0:2*pi/360:2*pi];% 自变量t
y=sin(t);%因变量y
min_in=min(t);%输入自变量最小值
max_in=max(t);%输入自变量最大值
n=numel(t);%自变量的位数
size_n=360;%量化等级,越大精度越高
s=[1:size_n];%S空间,输入量化后的离散空间
train_num=180;%用于训练的样本个数
maxgen=50;%最大迭代次数
mse=zeros(1,maxgen);%均方误差向量
gen=0;%实际迭代次数
eta=1.0;%学习率η
error_goal=0.00001;%误差精度要求
A_star=6;%每个状态对应的关联单元个数
common_unit=5;%相邻关联组有相同关联单元个数
a_num=size_n*A_star-(size_n-1)*common_unit;%关联单元总数
a=ones(1,a_num);% a 向量
w=zeros(1,a_num);% 权值向量
% 获取训练样本的输入和输出
train_in=zeros(1,train_num);%训练样本输入
train_out=zeros(1,train_num);%训练样本输出
for i=1:train_num
train_in(i)=t(floor((i-1)*n/train_num+1));
train_out(i)=y(floor((i-1)*n/train_num+1));
end
% 开始训练样本
for i=1:maxgen
gen=i;
forj=1:train_num
s_seq=floor((train_in(j)-min_in)/(max_in-min_in)*(size_n-1))+1;%量化空间S的序号
w_seq=(s_seq-1)*(A_star-common_unit)+1;%权值序号
ye(j)=sum(w(w_seq:w_seq+A_star-1));%实际输出
for k=w_seq:w_seq+A_star-1 %修正权值
w(k)=w(k)+eta*(train_out(j)-ye(j))/A_star;
end
end
error=0;
for j=1:train_num
error=error+(train_out(j)-ye(j))^2;
end
mse(i)=error;
if error
MATLAB里出现Subscript indices must either be real positive integers or logicals.% CMAC逼近sin(t)函数% 未进行Hash Coding杂凑% 作者:nuaazdh %时间:2012年2月23日16:53:28 clear all; close all; clc; t=[0:2*pi/360:2*pi];% 自变量t y
第36行 forj 改为 for j 并且补上一个end 就解决了
修改如下:
% CMAC逼近sin(t)函数
% 未进行Hash Coding杂凑
% 作者:nuaazdh
%时间:2012年2月23日16:53:28
clear all;
close all;
clc;
t=[0:2*pi/360:2*pi];% 自变量t
y=sin(t);%因变量y
min_in=min(t);%输入自变量最小值
max_in=max(t);%输入自变量最大值
n=numel(t);%自变量的位数
size_n=360;%量化等级,越大精度越高
s=[1:size_n];%S空间,输入量化后的离散空间
train_num=180;%用于训练的样本个数
maxgen=50;%最大迭代次数
mse=zeros(1,maxgen);%均方误差向量
gen=0;%实际迭代次数
eta=1.0;%学习率η
error_goal=0.00001;%误差精度要求
A_star=6;%每个状态对应的关联单元个数
common_unit=5;%相邻关联组有相同关联单元个数
a_num=size_n*A_star-(size_n-1)*common_unit;%关联单元总数
a=ones(1,a_num);% a 向量
w=zeros(1,a_num);% 权值向量
% 获取训练样本的输入和输出
train_in=zeros(1,train_num);%训练样本输入
train_out=zeros(1,train_num);%训练样本输出
for i=1:train_num
train_in(i)=t(floor((i-1)*n/train_num+1));
train_out(i)=y(floor((i-1)*n/train_num+1));
end
% 开始训练样本
for i=1:maxgen
gen=i;
for j=1:train_num
s_seq=floor((train_in(j)-min_in)/(max_in-min_in)*(size_n-1))+1;%量化空间S的序号
w_seq=(s_seq-1)*(A_star-common_unit)+1;%权值序号
ye(j)=sum(w(w_seq:w_seq+A_star-1));%实际输出
for k=w_seq:w_seq+A_star-1 %修正权值
w(k)=w(k)+eta*(train_out(j)-ye(j))/A_star;
end
end
error=0;
for j=1:train_num
error=error+(train_out(j)-ye(j))^2;
end
mse(i)=error;
if error