# Length of Matlab Raised Cosine Filter Output Complex Vector

If I instantiate in Matlab a filter, a vector, and use them in the following way:

vector = (complex(randn(1,k), randn(1,k)))';
filt = comm.RaisedCosineTransmitFilter('RolloffFactor',sdrqpsktx.RolloffFactor,'FilterSpanInSymbols',sdrqpsktx.RaisedCosineFilterSpan,'Gain',1,'OutputSamplesPerSymbol',sdrqpsktx.Interpolation)

comm.RaisedCosineTransmitFilter with properties:

Shape: 'Square root'
RolloffFactor: 0.5000
FilterSpanInSymbols: 10
OutputSamplesPerSymbol: 2
Gain: 1
output = filt(vector);


output will be a k*2 x 1 complex double. This is because of the OutputSamplesPerSymbol setting. The documentation on this function states that

The raised cosine filter has (FilterSpanInSymbols x InputSamplesPerSymbol + 1) taps.

So this filter has 2*10+1 = 21 taps. How then is the output computed? If you take the convolution of the coefficients of filt and vector you will get a (k+taps-1)x1 complex double, which makes sense to me because the output of a FIR filter is the convolution of its impulse response with the input signal. How then is output a k*2 x 1 complex double?

The filter computes OutputSamplesPerSymbol output samples for each input value. You would get the complete convolution if OutputSamplesPerSymbol were equal to $$1$$ and if you added zeros to your input signal until the filter memory contains no non-zero input values anymore.