Ignore:
Timestamp:
Mar 6, 2015, 9:10:16 PM (10 years ago)
Author:
sommeria
Message:

various bug fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/transform_field/signal_bandpass_filter.m

    r810 r881  
    2626%=======================================================================
    2727
    28 function DataOut=signal_bandpass_filter(DataIn)
     28function DataOut=signal_bandpass_filter(DataIn,Param)
     29
     30%% request input parameters
     31if isfield(DataIn,'Action') && isfield(DataIn.Action,'RUN') && isequal(DataIn.Action.RUN,0)
     32    VarNbDim=cellfun('length',DataIn.VarDimName);
     33    [tild,rank]=sort(VarNbDim,2,'descend');% sort the list of input variables, putting the ones with higher dimensionality first
     34    ListVarName=DataIn.ListVarName(rank);
     35    VarDimName=DataIn.VarDimName(rank);
     36    InitialValue=1;%default choice
     37    if isfield(Param,'TransformInput') && isfield(Param.TransformInput,'VariableName')
     38        val=find(strcmp(Param.TransformInput.VariableName,ListVarName));
     39        if ~isempty(val);
     40            InitialValue=val;
     41        end
     42    end
     43    [s,OK] = listdlg('PromptString','Select the variable to process:',...
     44        'SelectionMode','single','InitialValue',InitialValue,...
     45        'ListString',ListVarName);
     46    if OK==1
     47        VarName=ListVarName{s};
     48        DataOut.TransformInput.VariableName=VarName;
     49        dlg_title = [mfilename ' filter signal along first dim ' VarDimName{s}{1}];% title of the input dialog fig
     50        prompt = {'central filtering frequency';'bandwith (relative to the central frequency) '};% titles of the edit boxes
     51        %default input:
     52        def={'';'0.1'};% filtering frequency and relative bandwidth
     53
     54        if isfield(Param,'TransformInput')% if parameters have been memorised
     55            if isfield(Param.TransformInput,'CentralFrequency')
     56                def{1}=num2str(Param.TransformInput.CentralFrequency);
     57            end
     58            if isfield(Param.TransformInput,'BandWidth')
     59                 def{2}=num2str(Param.TransformInput.BandWidth);
     60            end
     61        end
     62        num_lines= 1;%numel(prompt);
     63        % open the dialog fig
     64        answer = inputdlg(prompt,dlg_title,num_lines,def);
     65        DataOut.TransformInput.CentralFrequency=str2num(answer{1});
     66        DataOut.TransformInput.BandWidth=str2num(answer{2});
     67    end
     68    return
     69end
     70
     71
     72
    2973%% set GUI config
    3074DataOut=[];
     
    3478end
    3579%%%%%%%%%%%%%%%%%%%%%%%%%
    36 frequency=2*5/54.5;% frequency at which the signal needs to be filetered
     80frequency=Param.TransformInput.CentralFrequency;% frequency at which the signal needs to be filetered
     81Bw=Param.TransformInput.BandWidth;
     82 DataOut=DataIn;
    3783 %d=fdesign.bandpass(0.8*frequency, 0.95*frequency, 1.05*frequency, 1.2*frequency, 60, 1, 60);
    38  d=fdesign.bandpass(0.7*frequency, 0.9*frequency, 1.1*frequency, 1.3*frequency, 60, 1, 60);
     84 d=fdesign.bandpass((1-2*Bw)*frequency, (1-Bw)*frequency, (1+Bw)*frequency, (1+2*Bw)*frequency, 60, 1, 60);
    3985 Hd=design(d);% command  fvtool(Hd) to visualize the filter frequency response
    40  DataOut=DataIn;
     86
    4187 if isfield(DataIn,'U')
    4288 DataOut.U = filter(Hd,DataIn.U);
Note: See TracChangeset for help on using the changeset viewer.