📄 dpsssave.m
字号:
function status = dpsssave(NW,E,V)
%DPSSSAVE Save discrete prolate spheroidal sequences in database.
% DPSSSAVE(NW,E,V) saves the DPSSs in E and their concentrations V in the
% DPSS MAT-file database, 'dpss.mat'. The length N of the DPSSs is determined
% by the number of rows of E, and NW is the "time-bandwidth product".
%
% STATUS = DPSSSAVE(NW,E,V) returns 0 if the save was successful and 1 if
% there was some error.
%
% See also DPSS, DPSSLOAD, DPSSDIR, DPSSCLEAR.
% Author: T. Krauss
% Copyright (c) 1988-98 by The MathWorks, Inc.
% $Revision: 1.10 $
error(nargchk(3,3,nargin))
stat = 0;
w = which('dpss.mat','-all');
N = size(E,1);
if ~all(size(NW)==1) | NW<0
error('The first input must be a scalar time-bandwidth product.')
end
if size(E,2) ~= length(V)
error('Number of columns of E and length of V do not match.')
end
doubled = 0;
if iscell(w)
for i=1:length(w)
doubled = strcmp(w{1},w{i});
if doubled, break, end
end
end
if ~doubled & length(w)>1
warning(sprintf('Multiple dpss.mat files found on path, using %s.',w{1}))
end
if length(w) == 0 % new dpss database
w = 'dpss.mat';
index.N = N;
index.wlist.NW = NW;
index.wlist.key = 1;
this_key = 1;
next_key = 2;
app = '';
else % add this to existing dpss
w = w{1};
%eval(['load ' w ' index next_key'])
eval(['load(''' w ''', ''index'', ''next_key'')'])
this_key = next_key;
next_key = next_key + 1;
index1 = dpssdir(N,NW);
i = find([index.N]==N);
if ~isempty(index1),
disp('dpss.mat already contains this E and V; over-writing old values.')
this_key = index1.wlist.key;
next_key = next_key - 1;
elseif ~isempty(i)
index(i).wlist(end+1).NW = NW;
index(i).wlist(end).key = this_key;
else
index(end+1).N = N; % grow index by 1
index(end).wlist.NW = NW;
index(end).wlist.key = this_key;
end
app = '-append';
end
copystr = sprintf('E%g = E; V%g = V;',this_key,this_key);
eval(copystr,'stat=1;')
if ~stat
if isempty(app)
appstr = ')';
else
appstr = [',''' app ''')'];
end
savestr = sprintf(['save(''%s'',''index'', ''next_key'', ''E%g'', '...
'''V%g''' appstr],...
w,this_key,this_key);
eval(savestr,'stat=1;')
end
if nargout > 0
status = stat;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -