Hi Nitzan,

I am looking at revision 5430 of xcorr.m .
Line 174 is "## insignificant complex portion left over from the FFT"
I think that if you look at this code, you may find the problem is
already fixed:
-------------------------------------------
  184   elseif strcmp(scale, 'coeff')
  185     ## R = R ./ R(maxlag+1) works only for autocorrelation
  186     ## For cross correlation coeff, divide by rms(X)*rms(Y).
  187     if !isvector(X)
  188       ## for matrix (more than 1 column) X
  189       rms = sqrt( sumsq(X) );
  190       R = R ./ ( ones(rows(R),1) * reshape(rms.'*rms,1,[]) );
  191     elseif isempty(Y)
  192       ##  for autocorrelation, R(zero-lag) is the mean square.
  193       R = R / R(maxlag+1);
  194     else
  195       ##  for vectors X and Y
  196       R = R / sqrt( sumsq(X)*sumsq(Y) );
  197     endif
---------------------------------------------
Please let me know if I am mistaken.
Thanks
Peter

On Thu, Mar 26, 2009 at 04:50:16PM +0200, nit ar wrote:
> 
> Hello octaveforge developers,
> 
> I am reporting again about the xcorr(...,'coeff') matlab
> compatibility issue (or bug ?!):
> 
> see previous message for description.
> 
> This problem can be easily solved by changing current lines 174 to 175
> in xcorr.m
> 
>   elseif strcmp(scale,'coeff')
>     R = R ./ ( ones(rows(R),1) * R(maxlag+1, :) );
> 
> to:
> 
>   elseif strcmp(scale,'coeff')
>     if isempty(Y)
>       sumx2=sum(abs(X).^2);
>       csumx2=sumx2.'*sumx2;
>       R = R ./ sqrt( ones(rows(R),1) * csumx2(:).' );
>     else
>       R = R / sqrt( sum(abs(X).^2) * sum(abs(Y.^2)) );
>     end
> 
> 
> Regards
> Nitzan Arazi
> From: [email protected]
> To: [email protected]
> Subject: xcorr incompatibilty
> Date: Mon, 4 Feb 2008 09:04:58 +0200
> 
> 
> Hello octaveforge developers,
> 
> I have found some incompatibility of the xcorr function between Octave and 
> Matlab.
> 
> When using c=xcorr(x,y,'coeff'), the 'coeff' scale is used by Octave to 
> normalize the cross correlation c at lag=0 to the value 1.0.
> On the other hand, Matlab uses the 'coeff' scale to normalize the the cross 
> correlation with an equivalent factor such that the autocorrelations of both 
> x and y are 1.0 at lag=0 !
> 
> This produce different scaling by xcorr(x,y,'coeff') in Octave and Matlab !
> I assume that this is not a bug since the different behavior is clearly 
> documented as different. It may be useful to change the definition of 
> Octave's xcorr scale parameter to be compatible with Matlab definition (this 
> can be easily done in the xcorr.m code).
> 
> Nitzan Arazi
> 
> 
> Express yourself instantly with MSN Messenger! MSN Messenger
> _________________________________________________________________
> Invite your mail contacts to join your friends list with Windows Live Spaces. 
> It's easy!
> http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
> ------------------------------------------------------------------------------

> _______________________________________________
> Octave-dev mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/octave-dev


-- 
(Dr.) Peter Lanspeary
Adjunct Lecturer
School of Mechanical Engineering
University of Adelaide
South Australia, 5005, AUSTRALIA

Phone:  (61) (8) 8303 4555
Fax:    (61) (8) 8303 4367
E-mail: [email protected]
Web:    http://www.mecheng.adelaide.edu.au/~pvl

------------------------------------------------------------------------------
_______________________________________________
Octave-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to