%%% File Name : rnn_gen_test_iterative.m %%% %%% Outputs %%% %%% qqq_out : The vector resulted from the test %%% %%% i_out : Number of iterations needed for convergence %%% %%% qqq_array_out : Matrix that contains the intermediate resulted vectors %%% Inputs %%% %%% Probe_in : The the input probe vector %%% %%% Num_Iter_in : Max Number of Iterations %%% %%% Display_in : = 1 for displaying intermediate results %%% %%% dis : convergence stopping crieteria %%% %%% Date : September, 1, 1999 %%% %%% Author : Hossam Eldin Mostafa Abdelbaki %%% %%% Address : University of Central Florida, %%% %%% : School of Computer Science %%% %%% Email : ahossam@cs.ucf.edu %%% %%% Home Page : http://www.cs.ucf.edu/~ahossam/ %%% %%% Help : read the manual file (rnnsimv2.pdf) %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [qqq_out,i_out,qqq_array_out] = rnn_gen_test_iterative(Probe_in,Initial_in,Num_Iter_in,Display_in,dis) global wplus wminus r global LAMBDA lambda; global N_Total qqq_out; global distance; distance = dis; i_out = 0; LAMBDA = []; lambda = []; prepare_test_patterns(Probe_in); qqq_out = Initial_in; %qqq_out = LAMBDA; %qqq_out = zeros(size(Probe_in)); %qqq_out = .5*ones(size(Probe_in)); for i = 1:Num_Iter_in qqq_out = calculate_ffm_output; %lambda=[0 0 0 0 0 0 0]; %%% if(nargout == 3) qqq_array_out(i,:) = qqq_out; end if(nargout >= 2) flag1 = check_equal; if(flag1 == 0) i_out = i; return end end if(Display_in == 1) show_output(i); end LAMBDA = qqq_out; end %%%%% Begin Function prepare_test_patterns %%%%%%%%%%%%%%%%%%%%%%%% function prepare_test_patterns(W) global LAMBDA lambda N_Total sz = size(W); N_Test_Patterns = sz(1); N_Total = sz(2); N_Input = N_Total ; Applied_lambda = zeros(N_Test_Patterns ,N_Input); Applied_LAMBDA = zeros(N_Test_Patterns ,N_Input); for j = 1:N_Input if (W(j) >= 0) Applied_LAMBDA(j) = W(j); % Applied_lambda(j)= .1; elseif(W(j) < 0) Applied_lambda(j)= -W(j); % Applied_LAMBDA(j) = .1; end end for i = 1:N_Input LAMBDA(i) = Applied_LAMBDA(i) ; lambda(i) = Applied_lambda(i) ; end %%%%%%%% End Function prepare_test_patterns %%%%%%%%%%%%%% %%%%%%%% Begin calculate_ffm_output %%%%%%%%%%%%%%%%%%%%%% function q_result = calculate_ffm_output() global wplus wminus; global r; global N_Total; global LAMBDA lambda; global qqq_out; q = qqq_out; %%%%q_n = qqq_out; for i = 1:N_Total N(i) = 0.0; D(i) = 0.0; for j = 1:N_Total N(i) = N(i) + q(j) * wplus(j,i); D(i) = D(i) + q(j) * wminus(j,i); end % N % D N(i) = N(i) + LAMBDA(i); D(i) = D(i) + r(i) + lambda(i); % N % D % pause if(D(i) ~= 0) q_n(i) = N(i)/D(i); end if(D(i) == 0) q_n(i) = 1.0; end if(q_n(i) > 1.0) q_n(i) = 1.0; end if(q_n(i) < 0.0) q_n(i) = 0.0; end %%%% q = q_n; % [i N(i) D(i) N(i)/D(i) q_n(i)] % pause end q_result = q_n; %%%%%%% end calculate_ffm_output %%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%% Function show_output %%%%%%%%%%%%%%%%%%%%%%%%%%%%% function show_output(pp) global qqq_out; mess1 = sprintf(' Iteration No. %d\n',pp); disp(mess1); disp(qqq_out) pause %%%%%%%% end show_output %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function aa = check_equal global LAMBDA qqq_out distance aa = 0; %for kk=1:length(qqq_out) %if(abs(qqq_out(kk) - LAMBDA(kk)) > 0.01) % aa = aa + 1; % return %end %end if(norm(qqq_out - LAMBDA) > distance) aa = aa +1; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%