?? buildg.m
字號:
function [F,G]=BuildG(Fg,delta)% BulidG Build the G matrix and F vector from Fg matrix
% (Fg for type 'g' correspond to F for type 'b' and 'o')
% Fg(n,k,p)=sign*F(q) <==> G(n,k,p)=sign*q and
% Fg(n,k,p)=0 <==> G(n,k,p)=0
%
% [F,G]=BuildG(Fg,delta);% -----------------------------------------------------------------------------------
% Arguments:
% F - a vector of all the different variables in F, size Qx1
% G - the "mapping" from F to Fg, Fg(n,k,p)=sign*F(q) <==> G(n,k,p)=sign*q
% size NxKxP
% Fg - the general frame Fg, size NxKxP.
% delta - a small number, numbers which differece is smaller than
% delta are considered to be equal. Default is 5*eps
% use delta=0 to let all non-zero variables be free
% -----------------------------------------------------------------------------------
%----------------------------------------------------------------------
% Copyright (c) 1999. Karl Skretting. All rights reserved.
% Hogskolen in Stavanger (Stavanger University), Signal Processing Group
% Mail: karl.skretting@tn.his.no Homepage: http://www.ux.his.no/~karlsk/
%
% HISTORY: dd.mm.yyyy
% Ver. 1.0 09.01.2001 KS: functio made
% Ver. 1.1 04.12.2002 KS: moved from ..\Frames\ to ..\FrameTools%----------------------------------------------------------------------
Mfile='BuildG';
Display=1; % should this function display status messsages
if (nargin < 2)
delta=5*eps;
end
if (nargin < 1)
error([Mfile,': wrong number of arguments, see help.']);
end
[N,K,P]=size(Fg);
Fg=Fg(:);
G=zeros(N*K*P,1);
Q=0;
F=[];
for i=1:(N*K*P)
if delta
if abs(Fg(i))>delta
q=1;
while q<=Q
if (abs(abs(F(q))-abs(Fg(i)))<delta)
G(i)=q*sign(Fg(i))*sign(F(q));
break;
end
q=q+1;
end
if q>Q
% a new value
q=Q+1;Q=q;
F=[F;Fg(i)];
G(i)=q;
end
end
else
if Fg(i)
Q=Q+1;
F=[F;Fg(i)];
G(i)=Q;
end
end
end
G=reshape(G,N,K,P);
return
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -