- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

I need to implement frequency remix and have a comparable performance as matlab.

The function i was trying is

Ipp32fc * pbuf = ippsMalloc_32fc(Np);

Ipp32fc * pbufcom = ippsMalloc_32fc(Np);

Ipp32fc * pbufmul = ippsMalloc_32fc(Np);

// IppStatus ippsTone_Direct_32fc(Ipp32fc* pDst, int len, float magn, float rFreq, float* pPhase, IppHintAlgorithmhint);

//IppStatus ippsRealToCplx_32f(const Ipp32f* pSrcRe, const Ipp32f* pSrcIm, Ipp32fc* pDst, int len);

IppStatCom = ippsRealToCplx_32f(pIsrc, pQsrc, pbufcom, Np);

ippStatsSin = ippsTone_Direct_32fc(pbuf,Np,1.0,foffcos,&ZeroPh,ippAlgHintAccurate);

// IppStatus ippsMul_32fc(const Ipp32fc* pSrc1, const Ipp32fc* pSrc2, Ipp32fc* pDst, int len);

IppStatMul = ippsMul_32fc(pbuf, pbufcom, pbufmul, Np);

//IppStatus ippsCplxToReal_32fc(const Ipp32fc* pSrc, Ipp32f* pDstRe, Ipp32f* pDstIm, int len);

ippStatsCos = ippsCplxToReal_32fc(pbufmul,pIdest,pQdest,Np);

foffcos = 0.0;

ippsFree(pbuf);

ippsFree(pbufcom);

ippsFree(pbufmul);

but the performance (i.e accuracy) of this implmentation is not all close tomatlab for sample size >10^4and initial phasor angle between (pi/2-pi/16). Though for smaller angle the perforamnce is comparable. The evm is non-linear in both cases. I tried reseting phase at a certain sample size but the ippsTone_Direct_32fc(pbuf,Np,1.0,foffcos,&ZeroPh,ippAlgHintAccurate); is not behaving as expected. I tried providing ZeroPh to a value equal to the phase that will be vaild at the resetting sample value. But the response is non-linear.

I treid 64 bit version also. The 64 bit version implmentation has linear evm but its high. I tired another version of implmentation

for (k = 0; k

{

v1

}

ippStatsSin = ippsSin_32f_A21(&v1[0], &v2[0], Np);

ippStatsCos = ippsCos_32f_A21(&v1[0], &v3[0], Np);

//remix

MultiplyComplexArrays( pIsrc,

pQsrc,

&v3[0],

&v2[0],

pIdest,

pQdest,

Np);

It has the similar non-linear EVM perfromance compared with Matlab

Matlab code

len = 2*10^6;

xI = ones(1,len);%.*0.707;%.* rand(1,len);

xQ = zeros(1,len);%.*0.707;%.* rand(1,len);

in = [0:1:len-1];

ph = pi/2;%different phase

remixI = cos(ph.*in);

remixQ = sin(ph.*in);

% remix

refI = xI.*remixI - xQ.*remixQ;

refQ = xQ.*remixI + xI.*remixQ;

rc= refI + 1i*refQ; % reference

dc = dllOutI+1i*dllOutQ; % IPP

mag = abs(dc);

angledc= unwrap(angle(dc));

magref =abs(rc);

anglerc= unwrap(angle(rc));

%error

magerr = magref - mag;

angleerr = anglerc- angledc;

Is there something i missed in the above implementation? Kindly suggest what are the possible solution to achive comparable performance.

Regards

Rohit

Kindly have a look and suggest some

Link Copied

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

EVM can be an abbreviation for:

Electronic Voting Machine

Earned value management

Economic value management; see economic value added

Electronic voltmeter; see voltmeter, a device to measure voltage

Electronic voting machine; see electronic voting

Error vector magnitude, a measure of performance of a radio demodulator

Evaluation module

Expert Group on Vitamins and Minerals

Extended Voice Module (Cisco Systems)

External Voice Mail; see voicemail

Extra-Value Meal; see McDonald's

Eyes, Voice, Movement; the three components of the Glasgow Coma Scale

Elastameric Variable Membrane; pool coating

Extruded Verbal Material

Regards,

Igor

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Sorry to confuse with the term EVM(its error vector maganitude). in thecontext of the function it is refering to

difference in the phase angle of the refernce vector and the IPP output vector. The reference vector is genrated using the matlab (the code defined above) and dllout is the output of the IPP function. I hope now EVM is clear in the context.

Rgs

Rohti

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page