摘要:
采用基2算法(频率抽样)首先确定有几级DFT: N = 8 so v = 3 (级)-0/8 0度-1/8 -45度-2/8 -90度-3/8 -135度为节约时间 0度 与-90 度 不采用 cordic (achieved by 2’s complement and BUS exchange)故整个三级DFT只有第一级需要两个 CORDIC注意 第一级是输入是real(时域采样回来的值) 第二第三极输入是real , image有很多方法完成这三级这里简单说下三个方案:a迭代方式:用一级模块反复计算3次特点:占用资源少 耗时大b流水线方式 :使用3个模块分别计算特点:占用资源大 耗时小c( 阅读全文
摘要:
该系统完成的是一个平面坐标旋转如图 1所示,可以看出,将向量(X i ,Y i ) 旋转 角,得到一个新的向量 ( Xj,Yj)。 将Rcos()展开 矩阵形式硬件上用乘除法很耗资源,未来节省资源采用这样的思路:最常用的代替乘法的方式是移位运算来看下把这乘法最终转换为移位的思路:移位运算只能做乘除2. 但这些运算组合可形成大的乘除法将要旋转的角度分解,每次完成一小块,多次后就可逼近角度值分解(逼近)方式入下: 其中的第n次旋转过程 第n次的旋转角度必须是这个(n为任意值)(arctan(1)= 45度) Sn为符号(-,+) ,各种 组合成 (即真正要旋转的角度) Zn为未旋转的角度~~~~~ 阅读全文
摘要:
二补数 (2's complement) :是一种用二进位表示有号数的方法,也是一种将数字的正负号变号的方式,常在计算机科学中使用。一个数字的二补数就是将该数字作位元反向运算(即一补数),再将结果加 1,即为该数字的二补数。 在二补数系统中,一个负数就是用其对应正数的二补数来表示。优点:二补数系统的最大优点是可以在加法或减法处理中,不需因为数字的正负而使用不同的计算方式。 只要一种加法电路就可以处理各种有号数加法,而且减法可以用一 个数加上另一个数的二补数来表示,因此只要有加法电路及二补数电路即可完成各种有号数加法及减法,在电路设计上相当方便。特点:二补数系统的 0 只有一个表示方式, 阅读全文
摘要:
Nmax = 2048; fft_time = zeros(1,Nmax); for n = 1:1:Nmax x = rand(1,n); %Uniformly distributed pseudorandom numbers t = clock;fft(x);fft_time(n)= etime(clock,t); end n = [1:1:Nmax]; plot(n,fft_time,'.') xlabel('N'); ylabel('Time in sec'); title('FFT execution times'); 阅读全文
摘要:
DFT:WN=e^(-j*2*pi/N)DFT复杂度o(N^2)降低与N^2的依赖 使N = LM (L^2+m^2 <= N^2)N点DFT分解为M段L点DFT一维的N点序列变为(L,M)二维序列,每一行分别进行DFT举例两种一维到二维的映射关系n = Ml+m13579246810n = l+mL12345678910与之所求的DFT 也可存入相对应的(q,p)矩阵中以第一种(n = Ml+m)为例:k = Mp+q找书麻烦这里给出推到:重一维到二维两种流程:按列存入信号计算每行M点DFT乘以相位因子计算每一列的L点DFT按行读取所得数组图示:来看下基2_FFT算法:上图的N/2点的 阅读全文
摘要:
常用于连续接收的信号(语音信号等) ,将这个序列可当做无限长序列、大的DFT会有不可接受的大延迟。因此必须将这个无限长的序列分割为比较小的部分。利用DFT处理每一段最后整合。由上一节可知:当响应为M点,输入为N点时(M<N),取N = N做循环卷积事,会有(M-1)个的重叠为啦实现块卷积我们可以如此来分块:x(n)=(n+1) 0<=n<=9分段:X1(N) = {0,0,1,2,3,4,}X2(N) = {3,4,5,6,7,8}X3(N) = {7,8,9,10,0,0}每个响应前两个都会重叠,使不清楚原来的值,(所以预先重复,且组合时前两个舍去) 阅读全文
摘要:
x1 = [1,2,2,1]; x2 = [1,-1,-1,1]; x3 = conv(x1,x2)x1 = [1,2,2,1]; x2 = [1,-1,-1,1]; %x3 = conv(x1,x2) %MATLAB 自带的函数 circonvt(x1,x2,9) %前面一节刚写的函数如果将X1 与X2 通过补零而成为N =(N1+N2-1)点序列,那么循环卷积就与线性卷积一样了。差别在于循环移位和线性移位。x1 = [1,2,2,1]; x2 = [1,-1,-1,1]; %x3 = conv(x1,x2) circonvt(x1,x2,7)x1 = [1,2,2,1]; x2 = [1, 阅读全文
摘要:
function m = mod(n,N) %computes m = mod(n mod N) %___________________ %m = mod(n,N) m = rem(n,N); m = m+N; m = rem(m,N);function y = cirshiftt(x,m,N) %circular shift of m samples wrt size N in sequnce x: %----------------------------------------------------- %[y] = cirshiftt(x,m,N) %y = output seque 阅读全文
摘要:
function [Xk] = dft(xn,N) %computes discrete fourier transform %--------------------------------------------- %[Xk] = dft(xn,N) %Xk = DFT coeff. array over 0<= k<=N-1 %xn = one period of periodic signal over 0<= n<= N-1 % N = Fundamental period of xn % n = [0:1:N-1]; k = [0:1:N-1]; WN = 阅读全文
摘要:
%方波 离散时间傅里叶变换 L = 5; N = 10; k = [-N/2:1:N/2]; %占空比 基本周期 离散时间的参数 xn = [ones(1,L),zeros(1,N-L)]; %生成方波序列 XK = dfs(xn,N); magXK = abs([XK(N/2+1:N),XK(1:N/2+1)]); subplot(2,2,3); stem(k,magXK); axis([-N/2,N/2,-0.5,5.5]); xlabel('k'); ylabel('X(k)'); title('DFS of SQ.wave:L = 5,N = 1 阅读全文