DSPRelated.com
Forums

compensation fir for CIC with interpolate by 2

Started by kungcoccos November 26, 2007
Hello!

My task is:

RRC with interpolate by 2 --> CIC compensation with interpolate by 2 -->
CIC filter interpolate by 8

The problem is that I dont know how to make the upsampling in the
compensation filter, for now I have written a code in matlab, with
compensation for passband droop.

step=0.01;
fp=[0:step:fo];
fs=[(fo+step):step:0.5];
f=[fp fs]*2;
as=ones(1,length(fp));  %gain 1*inv(sinc) in passband
as(2:end)=abs(M*R*sin(pi*fp(2:end)/R)./sin(pi*M*fp(2:end))).^N;
as=[as zeros(1,length(fs))];
f(end)=1;
h=fir2(L,f,as);

I see that its a LP filter, but is it possible to just upsample the input
to get the interpolation "function"? 

Thanks in advance!


On Mon, 26 Nov 2007 02:04:27 -0600, "kungcoccos" <carl@hallqvist.biz>
wrote:

>Hello! > >My task is: > >RRC with interpolate by 2 --> CIC compensation with interpolate by 2 --> >CIC filter interpolate by 8 > >The problem is that I dont know how to make the upsampling in the >compensation filter, for now I have written a code in matlab, with >compensation for passband droop. > >step=0.01; >fp=[0:step:fo]; >fs=[(fo+step):step:0.5]; >f=[fp fs]*2; >as=ones(1,length(fp)); %gain 1*inv(sinc) in passband >as(2:end)=abs(M*R*sin(pi*fp(2:end)/R)./sin(pi*M*fp(2:end))).^N; >as=[as zeros(1,length(fs))]; >f(end)=1; >h=fir2(L,f,as); > >I see that its a LP filter, but is it possible to just upsample the input >to get the interpolation "function"? > >Thanks in advance!
Hello kungcoccos, Your code is a bit difficultfor me to read. What is "fo"? Also, as far as I can tell, you have used the letters "end" to represent a number. Isn't that forbidden in MATLAB? [-Rick-]
On Nov 28, 5:06 pm, R.Lyons@_BOGUS_ieee.org (Rick Lyons) wrote:
> On Mon, 26 Nov 2007 02:04:27 -0600, "kungcoccos" <c...@hallqvist.biz> > wrote: > > > > >Hello! > > >My task is: > > >RRC with interpolate by 2 --> CIC compensation with interpolate by 2 --> > >CIC filter interpolate by 8 > > >The problem is that I dont know how to make the upsampling in the > >compensation filter, for now I have written a code in matlab, with > >compensation for passband droop. > > >step=0.01; > >fp=[0:step:fo]; > >fs=[(fo+step):step:0.5]; > >f=[fp fs]*2; > >as=ones(1,length(fp)); %gain 1*inv(sinc) in passband > >as(2:end)=abs(M*R*sin(pi*fp(2:end)/R)./sin(pi*M*fp(2:end))).^N; > >as=[as zeros(1,length(fs))]; > >f(end)=1; > >h=fir2(L,f,as); > > >I see that its a LP filter, but is it possible to just upsample the input > >to get the interpolation "function"? > > >Thanks in advance! > > Hello kungcoccos, > Your code is a bit difficultfor me to read. > What is "fo"? Also, as far as I can tell, you > have used the letters "end" to represent a number. > Isn't that forbidden in MATLAB? > > [-Rick-]
Rick, "end" is OK when used as a vector/matrix index. It refers to the last valid index for the given dimension. So, if v is a 10x1 vector, v(end) is equivalent to v(10). Jason
On Wed, 28 Nov 2007 17:12:54 -0800 (PST), cincydsp@gmail.com wrote:

>On Nov 28, 5:06 pm, R.Lyons@_BOGUS_ieee.org (Rick Lyons) wrote: >> On Mon, 26 Nov 2007 02:04:27 -0600, "kungcoccos" <c...@hallqvist.biz> >> wrote: >> >> >> >> >Hello! >> >> >My task is: >> >> >RRC with interpolate by 2 --> CIC compensation with interpolate by 2 --> >> >CIC filter interpolate by 8 >> >> >The problem is that I dont know how to make the upsampling in the >> >compensation filter, for now I have written a code in matlab, with >> >compensation for passband droop. >> >> >step=0.01; >> >fp=[0:step:fo]; >> >fs=[(fo+step):step:0.5]; >> >f=[fp fs]*2; >> >as=ones(1,length(fp)); %gain 1*inv(sinc) in passband >> >as(2:end)=abs(M*R*sin(pi*fp(2:end)/R)./sin(pi*M*fp(2:end))).^N; >> >as=[as zeros(1,length(fs))]; >> >f(end)=1; >> >h=fir2(L,f,as); >> >> >I see that its a LP filter, but is it possible to just upsample the input >> >to get the interpolation "function"? >> >> >Thanks in advance! >> >> Hello kungcoccos, >> Your code is a bit difficultfor me to read. >> What is "fo"? Also, as far as I can tell, you >> have used the letters "end" to represent a number. >> Isn't that forbidden in MATLAB? >> >> [-Rick-] > >Rick, > >"end" is OK when used as a vector/matrix index. It refers to the last >valid index for the given dimension. So, if v is a 10x1 vector, v(end) >is equivalent to v(10). > >Jason
Hi Jason, Ah ha. Interesting. Thanks! Jason, I don't know if you've solved you problem, but if you haven't then I'll try to help. Would you: [1] post a repeat of your code with comments included, [2] define all variables so that I can run your new code, and [3] please explain to me exactly what you mean by the word "upsample" and exactly what you mean by the phrase "interpolation function"? See Ya', [-Rick-]