Getting Error while implementing Filter object.
2 views (last 30 days)
Show older comments
Hello,
I am using the Digital Filter with properties. I have defined filt(1) as:
digitalFilter with properties:
Coefficients: [20x6 double]
Specifications:
FrequencyResponse: 'bandpass'
ImpulseResponse: 'iir'
SampleRate: 1000
PassbandFrequency1: 59.9000
PassbandRipple: 3
StopbandAttenuation2: 80
StopbandAttenuation1: 80
PassbandFrequency2: 60.0800
FilterOrder: 40
DesignMethod: 'ellip'
Similarly, I have other filters under filt object as filt(2), filt(3) upto filt(8) each at different frequencies.
Now, for some reason I get the error, when my program tries to run the line:
Q = filter(filt(1),x);
where, x is a 600000x1 column vector with only positive and negative real values (resembling a long sine wave)
The error that I get is:
Subscript indices must either be real positive integers or logicals.
Error in digitalFilter/filter (line 870)
y = obj.FilterFunction(obj.Coefficients,x);
Could anyone please point out the problem? Thanks a lot.
4 Comments
Walter Roberson
on 4 Mar 2017
I am not all that familiar with designfilt. It would be easier if you could give specific commands to create a filter that you have difficulty with, or if you were to attach the .mat that had the stored filters.
Accepted Answer
Walter Roberson
on 4 Mar 2017
When I design a filter matching the specifications of D_sig50(1), I see for it
FilterFunction: @filterIIR
FiltfiltFunction: @filtfiltIIR
GetCoefficientsForAnalysisFunction: @getCoeffsForAnalysisIIR
whereas for the loaded objects
FilterFunction: []
FiltfiltFunction: []
GetCoefficientsForAnalysisFunction: []
So either the filter functions were not saved or else the saved function reference could not be located at the time of reload of the objects and [] was substituted.
... Experimenting with a few back releases, I find that the filters work if you load them in R2015a, but not if you load them in R2015b.
3 Comments
Walter Roberson
on 4 Mar 2017
Edited: Walter Roberson
on 4 Mar 2017
Load the file. Then
filt = D_sig50(1);
sf = struct(filt) ;
sf.FilterFunction
The field does not exist in R2015a because the implementation was different
More Answers (0)
See Also
Categories
Find more on Filter Analysis in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!