傅里叶变换对称性质MATLAB,利用共轭对称和反对称性质做离散傅里叶变换求相关性问题...

LZ的数据不是128,补零成256;而本身数据长256,补零成512。

又从2个实数序列构成1个复数序列,FFT后恢复出各自的DFT时,求出的F_x和F_y不正确,所以进一步计算也都错误的。给出程序如下,其中计算了时间域的互相关函数,把它与从频域求出的自相关函数进行比较。

reals=load('sin_data.txt');

reals=reals-mean(reals);

imagc=load('cos_data.txt');

imagc=imagc-mean(imagc);

x=reals'+i*imagc';

N=512;

N2=N/2;

subplot 211; plot(1:N2,reals,'r',1:N2,imagc,'g'); grid;

title('红线是reals,绿线是imagc')

% 时间域求互相关函数

[R,lags]=xcorr(reals,imagc);

subplot 212; line([lags],[R],'color','r','linewidth',3);

title('红线是时间域-黑线是频率域计算出的互相关函数')

hold on;

[V,K]=max(R);

delay_lag=lags(K);

fprintf('MaxV=%5.2f   MaxK=%4d   Delay_lag=%4d\n',V,K,delay_lag);

% 二个实数序列构成一个复数序列的FFT

C=fft(x,N);

C_conj=conj([C(1); C(N:-1:2)]);

F_x=(C+C_conj)/2;

F_y=(C-C_conj)/(2*j);

delay_1=ifft(F_x.*conj(F_y));

delay_1=real(ifftshift(delay_1(1:N-1)));

figure;%延时

subplot 211; plot(lags,delay_1,'r'); grid;

title('delay_1表示的互相关函数')

X=fft(reals,N);

Y=fft(imagc,N);

Pxy=X.*conj(Y);

Rxy=ifft(Pxy,N);

Rxy=real(ifftshift(Rxy(1:N-1)));

%figure;%基本方法求得的延时

subplot 212; plot(lags,Rxy,'b-'); grid;

title('Rxy表示的互相关函数')

figure(1); subplot 212; plot(lags,delay_1,'k')

画的图列在下面,可以看出从时域求出的互相关函数与频域求出的两者重合得很好。而延迟量并不是LZ所说的64,而为56,其原因LZ计算的互相关函数是有偏估算。

jn1151a.jpg

(30.01 KB, 下载次数: 0)

2013-7-28 16:20 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

64970b01978bd87ed4e8a1f211a2c4f8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值