Mercurial > hg > ltpda
view m-toolbox/classes/@sigBuilder/cb_addSignal.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line source
% CB_ADDSIGNAL callback fires when the user clicks 'add signal' % % M Hewitson % % $Id: cb_addSignal.m,v 1.1 2008/10/19 11:42:40 hewitson Exp $ % function cb_addSignal(varargin) myh = varargin{1}; mainfig = varargin{end}; % sigType handle sh = findobj(mainfig.handle, 'Tag', 'SignalTypeSelect'); % Get selected signal val = get(sh, 'Value'); sigs = get(sh, 'String'); sig = sigs{val}; % Build signals switch lower(sig) case 'sine wave' obj = buildSineWave(mainfig); case 'white noise' obj = buildWhiteNoise(mainfig); case 'chirp' obj = buildChirp(mainfig); case 'gaussian pulse' obj = buildGaussPulse(mainfig); case 'square wave' obj = buildSquarewave(mainfig); case 'sawtooth' obj = buildSawtooth(mainfig); case 'noise generator' obj = buildNoiseGen(mainfig); case 'polynomial' obj = buildPolynomial(mainfig); case 'custom' obj = buildCustom(mainfig); otherwise error('### I can''t build signal ''%s'' yet', sig); end % Add this AO mainfig.signals = [mainfig.signals obj]; % Refresh list refreshSignalList(mainfig); end %-------------------------------------------------------------------------- % Build a noisegenerator signal function obj = buildPolynomial(mainfig) [fs, t0, name] = getFsT0(mainfig); % get coeffs h = findobj(mainfig.handle, 'Tag', 'Poly_Coeffs'); coeffs = eval(['[' get(h, 'String') ']']); if isempty(name) || strcmpi(name, 'none') name = sprintf('poly(%s)', mat2str(coeffs)); end % get Nsecs h = findobj(mainfig.handle, 'Tag', 'Poly_Length'); Nsecs = eval(['[' get(h, 'String') ']']); % Build obj = ao(plist('polyval', coeffs, ... 'nsecs', Nsecs, 'fs', fs, 't0', t0, 'name', name)); end %-------------------------------------------------------------------------- % Build a noisegenerator signal function obj = buildNoiseGen(mainfig) [fs, t0, name] = getFsT0(mainfig); % get f0 h = findobj(mainfig.handle, 'Tag', 'NoiseGen_Gain'); g = eval(get(h, 'String')); % get poles h = findobj(mainfig.handle, 'Tag', 'NoiseGen_Poles'); poles = eval(get(h, 'String')); % get zeroes h = findobj(mainfig.handle, 'Tag', 'NoiseGen_Zeros'); zeros = eval(get(h, 'String')); if isempty(name) || strcmpi(name, 'none') name = sprintf('noisegen'); end % get Nsecs h = findobj(mainfig.handle, 'Tag', 'NoiseGen_Length'); Nsecs = eval(['[' get(h, 'String') ']']); % Build pzm = pzmodel(g, poles, zeros); obj = ao(plist('pzmodel', pzm, ... 'nsecs', Nsecs, 'fs', fs, 't0', t0, 'name', name)); end %-------------------------------------------------------------------------- % Build a sawtooth signal function obj = buildSawtooth(mainfig) [fs, t0, name] = getFsT0(mainfig); % get f0 h = findobj(mainfig.handle, 'Tag', 'Sawtooth_F'); f0 = eval(get(h, 'String')); % get duty h = findobj(mainfig.handle, 'Tag', 'Sawtooth_Width'); wd = eval(get(h, 'String')); if isempty(name) || strcmpi(name, 'none') name = sprintf('saw(%g)', f0); end % get Nsecs h = findobj(mainfig.handle, 'Tag', 'Sawtooth_Length'); Nsecs = eval(['[' get(h, 'String') ']']); % Build obj = ao(plist('waveform', 'Sawtooth', ... 'f0', f0, 'width', wd, ... 'nsecs', Nsecs, 'fs', fs, 't0', t0, 'name', name)); end %-------------------------------------------------------------------------- % Build a square wave signal function obj = buildSquarewave(mainfig) [fs, t0, name] = getFsT0(mainfig); % get f0 h = findobj(mainfig.handle, 'Tag', 'SquareWave_F'); f0 = eval(get(h, 'String')); % get duty h = findobj(mainfig.handle, 'Tag', 'SquareWave_Duty'); duty = eval(get(h, 'String')); if isempty(name) || strcmpi(name, 'none') name = sprintf('square(%g)', f0); end % get Nsecs h = findobj(mainfig.handle, 'Tag', 'SquareWave_Length'); Nsecs = eval(['[' get(h, 'String') ']']); % Build obj = ao(plist('waveform', 'Square wave', ... 'f0', f0, 'duty', duty, ... 'nsecs', Nsecs, 'fs', fs, 't0', t0, 'name', name)); end %-------------------------------------------------------------------------- % Build a gauss pulse signal function obj = buildGaussPulse(mainfig) [fs, t0, name] = getFsT0(mainfig); % get f0 h = findobj(mainfig.handle, 'Tag', 'GPulse_F0'); f0 = eval(get(h, 'String')); % get BW h = findobj(mainfig.handle, 'Tag', 'GPulse_BW'); bw = eval(get(h, 'String')); if isempty(name) || strcmpi(name, 'none') name = sprintf('gpulse(%g)', f0); end % get Nsecs h = findobj(mainfig.handle, 'Tag', 'GPulse_Length'); Nsecs = eval(['[' get(h, 'String') ']']); % Build obj = ao(plist('waveform', 'Gaussian pulse', ... 'f0', f0, 'bw', bw, ... 'nsecs', Nsecs, 'fs', fs, 't0', t0, 'name', name)); end %-------------------------------------------------------------------------- % Build a chirp signal function obj = buildChirp(mainfig) [fs, t0, name] = getFsT0(mainfig); % get f0 h = findobj(mainfig.handle, 'Tag', 'Chirp_F0'); f0 = eval(get(h, 'String')); % get f1 h = findobj(mainfig.handle, 'Tag', 'Chirp_F1'); f1 = eval(get(h, 'String')); if isempty(name) || strcmpi(name, 'none') name = sprintf('chirp(%g->%g)', f0,f1); end % get T1 h = findobj(mainfig.handle, 'Tag', 'Chirp_T1'); t1 = eval(get(h, 'String')); % get Nsecs h = findobj(mainfig.handle, 'Tag', 'Chirp_Length'); Nsecs = eval(['[' get(h, 'String') ']']); % Build obj = ao(plist('waveform', 'chirp', ... 'f0', f0, 'f1', f1, 't1', t1, ... 'nsecs', Nsecs, 'fs', fs, 't0', t0, 'name', name)); end %-------------------------------------------------------------------------- % Build a custom signal function obj = buildCustom(mainfig) [fs, t0, name] = getFsT0(mainfig); % get type h = findobj(mainfig.handle, 'Tag', 'Custom_Fcn'); fcn = get(h, 'String'); if isempty(name) || strcmpi(name, 'none') name = fcn; end % get Nsecs h = findobj(mainfig.handle, 'Tag', 'Custom_Length'); Nsecs = eval(['[' get(h, 'String') ']']); % Build obj = ao(plist('tsfcn', fcn, ... 'nsecs', Nsecs, 'fs', fs, 't0', t0, 'name', name)); end %-------------------------------------------------------------------------- % Build a white noise function obj = buildWhiteNoise(mainfig) [fs, t0, name] = getFsT0(mainfig); % get type h = findobj(mainfig.handle, 'Tag', 'WhiteNoise_Type'); types = get(h, 'String'); type = types{get(h, 'Value')}; if strcmpi(name, 'none') || isempty(name) name = type; end % get Sigma h = findobj(mainfig.handle, 'Tag', 'WhiteNoise_Sigma'); sigma = eval(['[' get(h, 'String') ']']); % get Nsecs h = findobj(mainfig.handle, 'Tag', 'WhiteNoise_Length'); Nsecs = eval(['[' get(h, 'String') ']']); % Build obj = ao(plist('waveform', 'noise', ... 'type', type, 'sigma', sigma, ... 'nsecs', Nsecs, 'fs', fs, 't0', t0, 'name', name)); end %-------------------------------------------------------------------------- % Build a sine wave function obj = buildSineWave(mainfig) [fs, t0, name] = getFsT0(mainfig); % get amplitudes h = findobj(mainfig.handle, 'Tag', 'SineWave_Amplitudes'); amps = eval(['[' get(h, 'String') ']']); % get frequencies h = findobj(mainfig.handle, 'Tag', 'SineWave_Frequencies'); freqs = eval(['[' get(h, 'String') ']']); % get phases h = findobj(mainfig.handle, 'Tag', 'SineWave_Phases'); phases = eval(['[' get(h, 'String') ']']); % get Nsecs h = findobj(mainfig.handle, 'Tag', 'SineWave_Lengths'); Nsecs = eval(['[' get(h, 'String') ']']); % get Toffs h = findobj(mainfig.handle, 'Tag', 'SineWave_Starts'); Toffs = eval(['[' get(h, 'String') ']']); if strcmpi(name, 'none') || isempty(name) name = 'sin('; name = [name sprintf('%.2g,', freqs)]; name = [name(1:end-1) ')']; end % Build obj = ao(plist('waveform', 'sine wave', ... 'A', amps, 'f', freqs, 'phi', phases*pi/180, ... 'nsecs', Nsecs, 'toff', Toffs, 'fs', fs, 't0', t0, 'name', name)); end %-------------------------------------------------------------------------- % Retrieve the sample rate and start time and name % function [fs, t0, name] = getFsT0(mainfig) % name h = findobj(mainfig.handle, 'Tag', 'NameEdit'); name = get(h, 'String'); % T0 h = findobj(mainfig.handle, 'Tag', 'T0edit'); t0 = time(get(h, 'String')); % FS h = findobj(mainfig.handle, 'Tag', 'SampleRateEdit'); fs = eval(get(h, 'String')); end