realft.m

来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 49 行

M
49
字号
% realft.m

function [data]=realft(data,n,isign)
	
	c1=0.5;
	

	theta=3.141592653589793/n;
	if (isign == 1) 
		c2 = -0.5;
		data=four1(data,n,1);
	else 
		c2=0.5;
		theta = -theta;
	end
	wtemp=sin(0.5*theta);
	wpr = -2.0*wtemp*wtemp;
	wpi=sin(theta);
	wr=1.0+wpr;
	wi=wpi;
	n2p3=2*n+3;
	for i=2:n/2, 
		i1=i+i-1;
		i2=1+i1;
		i3=n2p3-i2;
		i4=1+i3;
		h1r=c1*(data(i1)+data(i3));
		h1i=c1*(data(i2)-data(i4));
		h2r = -c2*(data(i2)+data(i4));
		h2i=c2*(data(i1)-data(i3));
		data(i1)=h1r+wr*h2r-wi*h2i;
		data(i2)=h1i+wr*h2i+wi*h2r;
		data(i3)=h1r-wr*h2r+wi*h2i;
		data(i4) = -h1i+wr*h2i+wi*h2r;
		wtemp=wr;
		wr=wtemp*wpr-wi*wpi+wr;
		wi=wi*wpr+wtemp*wpi+wi;
	end
	if (isign == 1)
		h1r=data(1); 
		data(1) = h1r+data(2);
		data(2) = h1r-data(2);
	else 
		h1r=data(1);
		data(1)=c1*h1r+data(2);
		data(2)=c1*(h1r-data(2));
		data=four1(data,n,-1);
	end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?