📄 ldemo.m
字号:
% ------------------------------------------- % ------------------------------ % --- Box for compution time --- % ------------------------------ % ------------------------------------------ % --- Box for output of results integers --- % ------------------------------------------ h = uicontrol (... 'Style','Text', ... 'Position',[5 124 300 16], ... 'String','Estimated fixed ambiguities:', ... 'HorizontalAlignment','Left', ... 'BackgroundColor', [0.8 0.8 0.8]); h = uicontrol ( ... 'Style','Edit', ... 'Position',[2 2 636 120], ... 'BackgroundColor',[1 1 1], ... 'HorizontalAlignment','left', ... 'FontName','Courier New', ... 'Max',10, ... 'Tag','results');case 'intout'; switch option1; case '0'; set (findobj (gcf,'Tag','IntOut0'),'Value',1); set (findobj (gcf,'Tag','IntOut1'),'Value',0); set (findobj (gcf,'Tag','IntOut2'),'Value',0); case '1'; set (findobj (gcf,'Tag','IntOut0'),'Value',0); set (findobj (gcf,'Tag','IntOut1'),'Value',1); set (findobj (gcf,'Tag','IntOut2'),'Value',0); case '2'; set (findobj (gcf,'Tag','IntOut0'),'Value',0); set (findobj (gcf,'Tag','IntOut1'),'Value',0); set (findobj (gcf,'Tag','IntOut2'),'Value',1); end; case 'SelectFile'; switch option1; case 'In'; [FileName,PathName] = uigetfile ('*.mat','Select file'); load ([PathName FileName]); Qahat = Q; clear Q; afloat = a; clear a; curdim = size(Qahat,1); %[FileName,PathName] = uigetfile ('*.amb','Select file'); % [Qahat,afloat,curdim,ierr] = ReadCovar ([PathName FileName]); h = findobj (gcf,'Tag','InputFile'); set (h,'String',FileName); h = findobj(gcf,'Tag','dimension'); set (h,'String',num2str(curdim)); for i = 1:maxdim; tag = ['float' sprintf('%2.2d',i)]; h = findobj(gcf,'Tag',tag); if i <= curdim; set (h,'Enable','On'); set (h,'String',sprintf ('%8.4f',afloat(i))); else; set (h,'Enable','Off'); set (h,'String','0.0000'); end; end; for i = 1:maxdim; for j = 1:maxdim tag = ['mat' sprintf('%2.2d',i) sprintf('%2.2d',j)]; h = findobj(gcf,'Tag',tag); if i <= curdim & j <= curdim; set (h,'Enable','On'); set (h,'String',sprintf ('%8.4f',Qahat(i,j))); else; set (h,'Enable','Off'); set (h,'String','0.0000'); end; end; end; case 'Out'; [FileName,PathName] = uiputfile ('*.log','Select file'); h = findobj (gcf,'Tag','OutputFile'); set (h,'String',FileName); set (findobj (gcf,'Tag','IntOut0'),'Value',0); set (findobj (gcf,'Tag','IntOut1'),'Value',0); set (findobj (gcf,'Tag','IntOut2'),'Value',1); end;case 'dimension'; % ------------------------------------------- % --- Change the dimension of the problem --- % ------------------------------------------- h = findobj(gcf,'Tag','dimension'); curdim = str2num (get (h,'String')); if curdim < 1 | curdim > maxdim; msgbox ('Please select a dimension between 1 and 12','Illegal dimension','error'); end; for i = 1:maxdim; tag = ['float' sprintf('%2.2d',i)]; h = findobj(gcf,'Tag',tag); if i <= curdim; set (h,'Enable','On'); else; set (h,'Enable','Off'); end; end; for i = 1:maxdim; for j = 1:maxdim tag = ['mat' sprintf('%2.2d',i) sprintf('%2.2d',j)]; h = findobj(gcf,'Tag',tag); if i <= curdim & j <= curdim; set (h,'Enable','On'); else; set (h,'Enable','Off'); end; end; end;case 'makesymm' i = str2num (option1(4:5)); j = str2num (option1(6:7)); h = findobj(gcf,'Tag',option1); tmp = get (h,'String'); tag = ['mat' sprintf('%2.2d',j) sprintf('%2.2d',i)]; h = findobj(gcf,'Tag',tag); set (h,'String',tmp); case 'compute' % ------------------------------------ % --- Collect the input for LAMBDA --- % ------------------------------------ watchon; h = findobj(gcf,'Tag','ncands'); ncands = str2num(get(h,'String')); h = findobj(gcf,'Tag','dimension'); curdim = str2num (get (h,'String')); afloat = zeros(curdim,1); Qahat = zeros(curdim,curdim); for j = 1:curdim; tag = ['float' sprintf('%2.2d',j)]; h = findobj (gcf,'Tag',tag); afloat(j) = str2num(get(h,'String')); end; for i = 1:curdim; for j = 1:curdim; tag = ['mat' sprintf('%2.2d',i) sprintf('%2.2d',j)]; h = findobj (gcf,'Tag',tag); Qahat(i,j) = str2num(get(h,'String')); end; end; if get (findobj (gcf,'Tag','IntOut0'),'Value'); FidLog = 0; end; if get (findobj (gcf,'Tag','IntOut1'),'Value'); FidLog = 1; end; if get (findobj (gcf,'Tag','IntOut2'),'Value'); FileName = get (findobj (gcf,'Tag','OutputFile'),'String'); FidLog = fopen (FileName,'wt'); end; % ------------------------------------------ % --- Perform checks on validity of data --- % ------------------------------------------ % ------------------------------------- % --- Estimate integer using LAMBDA --- % ------------------------------------- [afixed,sqnorm,Qahat,Z] = lambda1 (afloat,Qahat,ncands,FidLog); if FidLog > 1; fclose (FidLog); end; % --------------------------------------------- % --- Write the results to the output-field --- % --------------------------------------------- string = char(ones(curdim+2,ncands*13+10)*32); string(1,1:8) = 'fixed :'; string(curdim+2,1:8) = 'sq.norm:'; for i = 1:curdim; for j = 1:ncands; istart = 10 + (j-1)*13; string(i,istart:istart+10) = sprintf ('%11.4f',afixed(i,j)); end; end; for i = 1:ncands; istart = 10 + (i-1)*13; string(curdim+2,istart:istart+10) = sprintf ('%11.4f',sqnorm(i)); end; h = findobj (gcf,'Tag','results'); set (h,'String',string); watchoff;case 'about'; % ------------- % --- About --- % ------------- helpwin (mfilename);case 'exit'; % ------------ % --- Exit --- % ------------ close (gcbf); disp ('Bye ...');otherwise; disp (['Warning ldemo: Illegal option choosen, please try again ...']); disp ([' Option: ' action]);end;% ----------------------------------------------------------------------% --- End of the main routine, start of internal functions ---% ----------------------------------------------------------------------function [Qahat,afloat,n,ierr] = ReadCovar (FileName)% ----------------------------------------------------------------------% Internal function: ReadCovar% Author...........:% Date.............:% Purpose..........:% Remarks..........:% ----------------------------------------------------------------------ierr = 0;[Fid,Msg] = fopen (FileName,'r');if Fid == -1; error (Msg);else; [n,count] = max(fscanf (Fid,'%d',1)); if count ~= 1; error ('Error ReadCovar: Error reading dimension (n) ==> Check inputfile ...'); end; [Qahat,count] = fscanf (Fid,'%f',n*n); if count ~= n*n; error ('Error ReadCovar: Error reading var/covar matrix (n) ==> Check inputfile ...'); end; [afloat,count] = fscanf (Fid,'%f',n); if count ~= n; error ('Error ReadCovar: Error reading float-vector (n) ==> Check inputfile ...'); end; Qahat = reshape (Qahat,n,n); fclose (Fid); end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -