📄 simnetrsom.m
字号:
function Net = SimNetRSOM(Net , IN)% SimNetRSOM Simulate a RSOM network% % Inputs: Net: Network structure created by 'CreateNetRSOM'% function.% IN: Input time series.%% Outputs: Net: Simulated network with results for Winners, State% Variables, and Weights. These values can be% accessed from 'State' field of network structure:% Net.State.Winners , Net.State.RSOMState.% The results of trained weights also can be% addressed from 'W' field: Net.W.WINRSOM ,% Net.W.WRSOM.%% ---------------------------------------------------------% Amir Reza Saffari Azar Alamdari% http://www.ymer.org/main.htm , amir@ymer.org% ---------------------------------------------------------%% InitializingINNum = Net.Dim.INNum;RSOMNum = Net.Dim.RSOMNum;RSOMSize = Net.Dim.RSOMSize;WINRSOM = Net.W.WINRSOM;WRSOM = Net.W.WRSOM;RSOMType = Net.RSOM.RSOMType;RSOMDFun = Net.RSOM.RSOMDFun;RSOMCFun = Net.RSOM.RSOMCFun;RSOMDINP = Net.RSOM.RSOMDINP;RSOMDCP = Net.RSOM.RSOMDCP;RSOMUnSLMode = Net.Learn.RSOMUnSLMode;RSOMUnSLFun = Net.Learn.RSOMUnSLFun;%% SimulatingStopTime = size(IN , 2);WinnerInd = zeros(1 , StopTime);switch RSOMType case 'RecSOM' RSOMState = zeros(RSOMNum , StopTime + 1); RSOMState(: , 1) = Net.State.RSOMState(: , end); case 'SOMSD' RSOMState = zeros(size(RSOMSize , 2) , StopTime + 1); RSOMState(: , 1) = Net.State.RSOMState(: , end); otherwise error('Unknown RSOMType !!!') endfor n = 2:StopTime + 1 I = IN(: , n - 1); switch RSOMDFun case 'Euclid' DINTemp = sum((WINRSOM - repmat(I , 1 , RSOMNum)).^2 , 1); DCTemp = sum((WRSOM - repmat(RSOMState(: , n - 1) , 1 , RSOMNum)).^2 , 1); DTemp = RSOMDINP*DINTemp + RSOMDCP*DCTemp; TempWinner = find(DTemp == min(DTemp)); WinnerInd(n - 1) = TempWinner(1); switch RSOMType case 'RecSOM' switch RSOMCFun case 'Exp' RSOMState(: , n) = exp(-DTemp)'; otherwise error('Unknown RSOMCFun !!!') end case 'SOMSD' [Temp(1) , Temp(2)] = ind2sub(RSOMSize , WinnerInd(n - 1)); RSOMState(: , n) = Temp'; end otherwise error('Unknown RSOMDFun !!!') end %% Learning switch RSOMUnSLMode case 'Online' switch RSOMUnSLFun case 'None' otherwise Net = feval(RSOMUnSLFun , Net , I , RSOMState(: , n - 1) , WinnerInd(n - 1)); WINRSOM = Net.W.WINRSOM; WRSOM = Net.W.WRSOM; end otherwise error('Unknown RSOMUnSLMode !!!') end end%% StoringNet.State.Winners = WinnerInd;Net.State.RSOMState = RSOMState;Net.State.StopTime = StopTime;if Net.Misc.ShowMessages disp('Simulating network: Done.')endreturn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -