MATLAB, error while trying to implement a Designed Filter object I am using the Digital Filter with properties in MATLAB. I have defined the filter object 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) up to 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 600000 x 1 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?

EDIT:

The designfilt command opens up an interactive interface where you can change and tune your filter requirements. I have optimized the filters, and saved the results as a .mat file. (This whole program used to work, was part of a significant project which we completed succesfully, but after a year doesn't seem to work somehow).

I have attached the filter_8th.mat file. There are various filters here. I have already created these filters before hand because MATLAB takes a lot of time to create these.

In this .mat file, the filter objects are named as D_n1_50, D_n1_60, D_sig50, D_sig60 etc. (easily recognizable from the Workspace.)

The line of code that assigns these filter to the variable filt is, for example: filt = D_sig50. This is being selected in a loop. Which filter will be selected depends on a conditional if-else structure.

The .mat file containing "filters" and the variable x are in this dropbox link:
The issue has been resolved. This is due to the absence of the filter object fields:

                    FilterFunction:
                  FiltfiltFunction:
GetCoefficientsForAnalysisFunction:


In MATLAB 2015a these fields are absent from the filters objects. But in MATLAB 2016a (which is I am using, these fields seem to be required.) As the files were imported after creation in MATLAB 2015a, that seems to be the problem. Recreating, the fields in MATLAB 2016a solved the issue. The fields have also been created.

The code ran to check:

filt = D_sig50(1);
sf = struct(filt) ;
sf.FilterFunction


Created in MATLAB 2015a:
output:

                    FilterFunction: []
                  FiltfiltFunction: []
GetCoefficientsForAnalysisFunction: []


These fields in the filter object are empty (after loading these filters in MATLAB 2016a)

Created in MATLAB 2016a:

                    FilterFunction: @filterIIR
                  FiltfiltFunction: @filtfiltIIR
GetCoefficientsForAnalysisFunction: @getCoeffsForAnalysisIIR


The fields are now present in the filter object, and the code works now.