view aim-mat/tools/@signal/signal.m @ 0:74dedb26614d

Initial checkin of AIM-MAT version 1.5 (6.4.2011).
author tomwalters
date Fri, 20 May 2011 12:32:31 +0100
parents
children 20ada0af3d7d
line wrap: on
line source
% constructor of class @signal
% parent class: none
% function sig=signal(length,samplerate,name,unit_x,unit_y,start_time)
%   INPUT VALUES:
%       length: length of signal in seconds [default 1]
%       samplerate: samplerate in Hz (points per seconds) [default: 1000]
%		name: display name of the signal (string)
%		unit_x: display unit on x-axis (string)
%		unit_y: display unit on y-axis (string)
%		start_time: virtual start time of the signal (default 0)
%
%   RETURN VALUE:
% 		@signal-object
%
% Valid constructor-calls:
% 	1: no or any number of arguments above
% 	2: signal(@other_signal_object) : Copy-Constructor
% 	3: signal(values): copies the values in the @signal
%
% a signal consist of n points according to its length*sr
% the time "0" is not associated with a bin. the first bin is time sr, the
% second 2*sr, etc the nth bin is the signal-duration
%
% (c) 2003-2008, University of Cambridge, Medical Research Council 
% Maintained by Tom Walters (tcw24@cam.ac.uk), written by Stefan Bleeck (stefan@bleeck.de)
% http://www.pdn.cam.ac.uk/cnbh/aim2006
% $Date: 2008-06-10 18:00:16 +0100 (Tue, 10 Jun 2008) $
% $Revision: 585 $

function sig=signal(laenge,samplerate,name,unit_x,unit_y,start_time)


if nargin < 6
    start_time=0;
end
if nargin < 5
    unit_y='amplitude';
end
if nargin < 4
    unit_x='time (ms)';
end
if nargin < 3
    name='generic Signal';
end
if nargin < 2
    samplerate=1000;
end
if nargin < 1
    laenge=1;
end

if isobject(laenge)
    sig.werte=laenge.werte;
    samplerate=laenge.samplerate;
    name=laenge.name;
    unit_x=laenge.unit_x;
    unit_y=laenge.unit_y;
    start_time=laenge.start_time;
%     sig.nr_x_ticks=laenge.nr_x_ticks;
%     sig.x_tick_labels=laenge.x_tick_labels;
else
    a1=size(laenge,1);    a2=size(laenge,2);
    if a1>1 & a2>1
        disp('Signal Constructor Error: input vector has more than one dimension');
    end
    % erst Abfrage, welche Konstruktionsmethode:
    if a2>1 %Benutzer hat Zeilenvektor eingegeben, wir wollen einen Spaltenvektor
        laenge=laenge';
        a1=a2;
    end
    if a1>1 % AHA! Ein Vektor
        sig.werte=laenge;
    else
        nr_points=round(laenge*samplerate);
        sig.werte=zeros(nr_points,1);
    end
end
sig.samplerate=samplerate;
sig.name=name;
sig.unit_x=unit_x;
sig.unit_y=unit_y;
sig.start_time=start_time;
sig.nr_x_ticks=9;
% if the ticks shell be numbers or something else
sig.x_tick_labels=[];

sig=class(sig,'signal');