FFT快速傅里叶变换Matlab自编程序.
matlab自行编写fft傅里叶变换
傅里叶变换(Fourier Transform)是信号处理中的重要数学工具,它可以将一个信号从时域转换到频域。
在数字信号处理领域中,傅里叶变换被广泛应用于频谱分析、滤波、频谱估计等方面。
MATLAB作为一个功能强大的数学软件,自带了丰富的信号处理工具箱,可以用于实现傅里叶变换。
在MATLAB中,自行编写FFT(Fast Fourier Transform)的过程需要以下几个步骤:1. 确定输入信号我们首先需要确定输入信号,可以是任意时间序列数据,例如声音信号、振动信号、光学信号等。
假设我们有一个长度为N的信号x,即x = [x[0], x[1], ..., x[N-1]]。
2. 生成频率向量在进行傅里叶变换之前,我们需要生成一个频率向量f,用于表示频域中的频率范围。
频率向量的长度为N,且频率范围为[0, Fs),其中Fs 为输入信号的采样频率。
3. 实现FFT算法FFT算法是一种高效的离散傅里叶变换算法,它可以快速计算出输入信号的频域表示。
在MATLAB中,我们可以使用fft函数来实现FFT 算法,其调用方式为X = fft(x)。
其中X为输入信号x的频域表示。
4. 计算频谱通过FFT算法得到的频域表示X是一个复数数组,我们可以计算其幅度谱和相位谱。
幅度谱表示频率成分的强弱,可以通过abs(X)得到;相位谱表示不同频率成分之间的相位差,可以通过angle(X)得到。
5. 绘制结果我们可以将输入信号的时域波形和频域表示进行可视化。
在MATLAB 中,我们可以使用plot函数来绘制时域波形或频谱图。
通过以上几个步骤,我们就可以在MATLAB中自行编写FFT傅里叶变换的算法。
通过对信号的时域和频域表示进行分析,我们可以更好地理解信号的特性,从而在实际应用中进行更精确的信号处理和分析。
6. 频谱分析借助自行编写的FFT傅里叶变换算法,我们可以对信号进行频谱分析。
频谱分析是一种非常重要的信号处理技术,可以帮助我们了解信号中所包含的各种频率成分以及它们在信号中的能量分布情况。
matlab fft变换代码
MATLAB中提供了fft变换函数,可以用来对信号进行傅里叶变换,得到信号的频谱信息。
下面将介绍如何使用MATLAB进行fft变换,并给出代码示例。
1. 准备信号数据我们需要准备一段信号数据,可以是从文件中读取的音频数据,也可以是模拟信号的采样数据。
假设我们有一个长度为N的信号向量x,其中包含了我们要进行fft变换的信号数据。
2. 计算fft变换在MATLAB中,可以使用fft函数来对信号进行傅里叶变换。
在进行变换之前,通常需要对信号做一些预处理,如去除直流分量、进行窗函数处理等。
假设我们已经对信号进行了预处理,接下来可以对信号进行fft变换了。
代码示例如下:```matlabX = fft(x);```这里,X是得到的频谱数据,它是一个长度为N的复数向量,包含了信号的频谱信息。
3. 频谱数据处理得到频谱数据之后,通常需要对其进行进一步的处理,如计算幅度谱、相位谱、频谱图等。
代码示例如下:```matlabP2 = abs(X/N);P1 = P2(1:N/2+1);P1(2:end-1) = 2*P1(2:end-1);f = Fs*(0:(N/2))/N;plot(f,P1)title('Single-Sided Amplitude Spectrum of X(t)')xlabel('f (Hz)')ylabel('|P1(f)|')```在这段示例代码中,计算了信号的单边幅度谱,并绘制了频谱图。
在实际应用中,还可以根据具体需求对频谱数据进行进一步处理。
4. 代码示例下面给出一个完整的MATLAB代码示例,展示了如何进行fft变换并绘制频谱图:```matlab准备信号数据Fs = 1000; 采样频率t = 0:1/Fs:1-1/Fs; 时间向量x = cos(2*pi*100*t) + 2*sin(2*pi*200*t);计算fft变换N = length(x);X = fft(x);频谱数据处理P2 = abs(X/N);P1 = P2(1:N/2+1);P1(2:end-1) = 2*P1(2:end-1);f = Fs*(0:(N/2))/N;plot(f,P1)title('Single-Sided Amplitude Spectrum of X(t)')xlabel('f (Hz)')ylabel('|P1(f)|')```运行以上代码,即可得到信号的频谱图。
详解用matlab如何实现fft变换
详解用matlab如何实现fft变换使用MATLAB实现FFT(快速傅里叶变换)非常简单。
MATLAB提供了内置的fft函数,可以直接用于计算信号的傅里叶变换。
首先,我们需要准备一个要进行傅里叶变换的信号。
可以使用MATLAB的数组来表示信号。
例如,我们可以创建一个包含100个采样点的正弦信号:```matlabFs=1000;%采样频率T=1/Fs;%采样间隔L=1000;%信号长度t=(0:L-1)*T;%时间向量A=0.7;%信号幅值f=50;%信号频率x = A*sin(2*pi*f*t); % 正弦信号```接下来,我们可以使用fft函数计算信号的傅里叶变换:```matlabY = fft(x); % 计算信号的傅里叶变换P2 = abs(Y/L); % 双边频谱P1=P2(1:L/2+1);%单边频谱P1(2:end-1) = 2*P1(2:end-1); % 修正幅度f=Fs*(0:(L/2))/L;%频率向量plot(f,P1) % 绘制单边频谱title('单边振幅谱')xlabel('频率 (Hz)')ylabel('幅值')```上述代码首先使用fft函数计算信号x的傅里叶变换,得到一个包含复数的向量Y。
然后,我们计算双边频谱P2,即将复数取模。
接下来,我们提取出单边频谱P1,并对幅度进行修正,以保证能量的准确表示。
最后,我们计算频率向量f,并绘制单边频谱。
运行上述代码,就可以得到信号的傅里叶变换结果的幅度谱图。
需要注意的是,FFT是一种高效的算法,但它要求输入信号的长度为2的幂。
如果信号的长度不是2的幂,可以使用MATLAB的fft函数之前,使用padarray函数将信号填充到2的幂次方长度。
此外,MATLAB还提供了其他一些函数,可以用于计算不同类型的傅里叶变换,如快速傅里叶变换、离散傅里叶变换、短时傅里叶变换等。
可以根据具体的需求选择合适的函数进行使用。
快速傅里叶变换fft的Matlab实现 实验报告
一、实验目的1在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解;2熟悉并掌握按时间抽取FFT算法的程序;3了解应用FFT进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、栅栏效应等,以便在实际中正确应用FFT。
二、实验内容1仔细分析教材第六章‘时间抽取法FFT’的算法结构,编制出相应的用FFT 进行信号分析的C语言(或MATLAB语言)程序;用MATLAB语言编写的FFT源程序如下:%%输入数据f、N、T及是否补零clc;clear;f=input('输入信号频率f:');N=input('输入采样点数N:');T=input('输入采样间隔T:');C=input('信号是否补零(补零输入1,不补零输入0):');%补零则输入1,不补则输入0if(C==0)t=0:T:(N-1)*T;x=sin(2*pi*f*t);b=0;e lseb=input('输入补零的个数:');while(log2(N+b)~=fix(log2(N+b)))b=input('输入错误,请重新输入补零的个数:');endt=0:T:(N+b-1)*T;x=sin(2*pi*f*t).*(t<=(N-1)*T);end%%fft算法的实现A=bitrevorder(x);%将序列按二进制倒序N=N+b;M=log2(N);%M为蝶形算法的层数W=exp(-j*2*pi/N);for L=1:1:M%第L层蝶形算法B=2^L/2;%B为每层蝶形算法进行加减运算的两个数的间隔K=N/(2^L);%K为每层蝶形算法中独立模块的个数for k=0:1:K-1for J=0:1:B-1p=J*2^(M-L);%p是W的指数q=A(k*2^L+J+1);%用q来代替运算前面那个数A(k*2^L+J+1)=q+W^p*A(k*2^L+J+B+1);A(k*2^L+J+B+1)=q-W^p*A(k*2^L+J+B+1);endendend%%画模特性的频谱图z=abs(A);%取模z=z./max(z);%归一化hold onsubplot(2,1,1);stem(0:1:N-1,x,'DisplayName','z');title('时域信号');subplot(2,1,2);stem(0:1:N-1,z,'DisplayName','z');title('频谱图');figure(gcf)%画图2用FFT 程序计算有限长度正弦信号()sin(2),0*y t f t t N Tπ=≤<分别在以下情况下所得的DFT 结果并进行分析和讨论:a )信号频率f =50Hz ,采样点数N=32,采样间隔T=0.000625sb )信号频率f =50Hz ,采样点数N=32,采样间隔T=0.005sT=0.0046875sc)信号频率f=50Hz,采样点数N=32,采样间隔051015202530350510152025303505101520253035 e)信号频率f=50Hz,采样点数N=64,采样间隔T=0.000625sg)将c)信号后补32个0,做64点FFT三、实验分析DFT是对有限序列做傅里叶变换后在频域上进行采样,而相对应的时域以频谱上的采样频率的倒数进行周期拓展。
Matlab编程实现FFT变换及频谱分析的程序代码
Matlab编程实现FFT变换及频谱分析的程序代码内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%*************************************************************** **********%% FFT实践及频谱分析%%*************************************************************** **********%%*************************************************************** **********%%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(1);subplot(232);plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128');grid;%求均方根谱sq=abs(y);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱');grid;%求功率谱power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形');grid;%****************2.矩形波****************% fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图');grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('矩形波均方根谱');grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('矩形波功率谱');grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('矩形波对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************% fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱');grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱');grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形'); grid;。
Matlab编程实现FFT变换
Matlab编程实现FFT变换及频谱分析的程序代码内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%*************************************************************** **********%% FFT实践及频谱分析%%*************************************************************** **********%%*************************************************************** **********%%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(1);subplot(232);plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128');grid;%求均方根谱sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱');grid;%求功率谱power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形');grid;%****************2.矩形波****************% fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形xlabel('t');ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图');grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('矩形波均方根谱');grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('矩形波功率谱');grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('矩形波对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************% fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱');grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱');grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形'); grid;。
数字信号处理实验 matlab版 快速傅里叶变换(FFT)
实验14 快速傅里叶变换(FFT)(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word 格式会让很多部分格式错误,谢谢)XXXX 学号姓名处XXXX一、实验目的1、加深对双线性变换法设计IIR 数字滤波器基本方法的了解。
2、掌握用双线性变换法设计数字低通、高通、带通、带阻滤波器的方法。
3、了解MA TLAB 有关双线性变换法的子函数。
二、实验内容1、双线性变换法的基本知识2、用双线性变换法设计IIR 数字低通滤波器3、用双线性变换法设计IIR 数字高通滤波器4、用双线性变换法设计IIR 数字带通滤波器三、实验环境MA TLAB7.0四、实验原理1、实验涉及的MATLAB 子函数(1)fft功能:一维快速傅里叶变换(FFT)。
调用格式:)(x fft y =;利用FFT 算法计算矢量x 的离散傅里叶变换,当x 为矩阵时,y 为矩阵x每一列的FFT 。
当x 的长度为2的幂次方时,则fft 函数采用基2的FFT 算法,否则采用稍慢的混合基算法。
),(n x fft y =;采用n 点FFT 。
当x 的长度小于n 时,fft 函数在x 的尾部补零,以构成n点数据;当x 的长度大于n 时,fft 函数会截断序列x 。
当x 为矩阵时,fft 函数按类似的方式处理列长度。
(2)ifft功能:一维快速傅里叶逆变换(IFFT)。
调用格式:)(x ifft y =;用于计算矢量x 的IFFT 。
当x 为矩阵时,计算所得的y 为矩阵x 中每一列的IFFT 。
),(n x ifft y =;采用n 点IFFT 。
当length(x)<n 时,在x 中补零;当length(x)>n 时,将x 截断,使length(x)=n 。
(3)fftshift功能:对fft 的输出进行重新排列,将零频分量移到频谱的中心。
调用格式:)(x fftshift y =;对fft 的输出进行重新排列,将零频分量移到频谱的中心。
FFT算法MATLAB实现程序使用
FFT算法MATLAB实现程序使用
一、本程序主要的功能:
1,实现FFT的两种基2算法,DIT和DIF算法;
2,可以多次计算信号的FFT;
二、使用介绍:
1,在MATLAB软件运行该程序,出现如下提示界面:
⚫首先输入频率f1的数值,必须在要求的数值区间,否则会出现如下提示,需要重新输入f1数值:
⚫然后输入频率f2的数值,同样要求在要求的数值区间,否则会出现如下提示,需要重新输入f1数值:
⚫接着选择用DIF算法或者DIT算法:
⚫然后可以在图窗查看图形结果,或者在变量工作区查看计算结果:
⚫最后可以选择是否继续下次运算。
matlab中fft变换
在MATLAB中进行FFT(快速傅里叶变换)变换,可以使用内置的`fft`函数。
以下是一个简单的示例,展示如何对一个信号进行FFT变换:
```matlab
创建一个简单的正弦波信号
Fs = 1000; 采样频率
T = 1/Fs; 采样周期
L = 1000; 信号长度
t = (0:L-1)*T; 时间向量
f = 50; 信号频率
S = 0.7*sin(2*pi*f*t); 正弦波信号
进行FFT变换
Y = fft(S);
计算双边频谱P2。
然后通过P2 和奈奎斯特定理得到单边频谱P1。
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
将单边谱转换为线性频率轴
f = Fs*(0:(L/2))/L;
绘制频谱图
figure;
plot(f,P1)
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)')
ylabel('|P1(f)|')
```
上述代码首先创建一个简单的正弦波信号,然后对其进行FFT变换。
最后,代码绘制了该信号的单边频谱图。
请注意,FFT返回的是复数结果,表示信号的频率成分。
在实际应用中,通常只关心频谱的幅度,因此通常使用`abs`函数来获取幅度谱。
快速傅里叶变换-基4时间抽取FFT算法matlab实现
快速傅里叶变换-基4时间抽取FFT 算法matlab 实现作者姓名:李林摘要:FFT ( 快速傅里叶变换) 算法与DFT (离散傅里叶变换) 算法比较, 其运算量显著减少, 用计算机实现时速度大为提高。
但FFT 过程所需的运算量仍较可观, 常给数字信号的实时处理带来困难,理论和实践表明, 若要加快FFT 算法在计算机上的实现, 关键是得设法减少FFT 过程在乘法运算上的时间开销。
若改进算法, 减少过程中的乘法次数, 则无疑能加快FFT 的实现 。
通常的FFT 幂法都是“基2 分解法” , 即长度为N 的DFT 序列由两个长度为2 / N 的DFT 序列的组合表示; 而这两个长度为2 / N 的DFT 序列各自又分别由两个长度为4 / N 的DFT 序列的组合表示 , 按照这一做法对序列进行反复分解, 直到每个序列的长度等于2为止。
这个分解、组合过程如同一棵标准二叉树。
按分解的逆过程进行组合运算便得到所要求的频谱序列)n ( F ,... , l , 0 (n ,1- N ) 整个变换过程共需要进行 N log 2 / N 2次复数乘法运算。
参考上述的分解、组合方法, 对序列进行“ 基4 分解” , 即长度为N 的DFT 序列由四个长度为4 / N 的DFT 序列组合表示。
关键词: FFT 基2分解法 基4分解 运算时间和精度目录一,前言1,实验目的2,题目要求3,考查要求二,基—4FFT算法原理1,基—4FFT定义:2,举例3,旋转因子kmW的性质N4,16点基4时间抽取FFT算法流图三,基—4FFT运算的实现1,算法分析2.算法流程图3.Matlab程序执行结果四,两种程序运算量分析和比较 1,matlab自带函数运算量分析2,基四FFT的运算量3,运算结果比较4,结果分析五,设计总结六,参考文献七,附录:一,前言1,实验目的:检查学生的综合应用能力。
2,题目要求:已知 输入信号x(t)=0.6sin(200πt)+sin(400πt)+0.3sin(800πt) 。
Matlab编程实现FFT变换及频谱分析的程序代码
Matlab编程实现FFT变换及频谱分析的程序代码内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%*************************************************************** **********%% FFT实践及频谱分析%%*************************************************************** **********%%*************************************************************** **********%%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(1);subplot(232);plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128');grid;%求均方根谱sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱');grid;%求功率谱power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形');grid;%****************2.矩形波****************% fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形xlabel('t');ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图');grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('矩形波均方根谱');grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('矩形波功率谱');grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('矩形波对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************% fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱');grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱');grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形'); grid;。
Matlab编程实现FFT变换及频谱分析的程序代码
Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)2007-10-08 sysop 点击: 436Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%*************************************************************************%% FFT实践及频谱分析 %%*************************************************************************%%*************************************************************************%%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(1);subplot(232);plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128'); grid;%求均方根谱sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱'); grid;%求功率谱power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形'); grid;%****************2.矩形波****************% fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形xlabel('t');ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图');grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('矩形波均方根谱');grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('矩形波功率谱');grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('矩形波对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************%fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱');grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱');grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形');grid;本文责任编辑: sysop相关文章? 请教:目前可有哪些用于EMC仿真的软件 - 08-18 10:01 am - 点击: 2718 发表评论查看评论加入收藏 Email给朋友打印本文如果你想对该文章评分, 请先登陆, 如果你仍未注册,请点击注册链接注册成为本站会员. 平均得分 0, 共 0 人评分1 2 3 4 5 6 7 8 9 10。
MATLAB编写的fft2程序更新版
快速傅立叶变换(时域抽取基二fft )1. 编程思想根据快速傅立叶变换的信号流图可知,可将整个过程中所有的数据组成一个二维数组data(N,M+1),数组共有N 行,M+1列(傅立叶变换分为M=log2(N)级,再加上第一级倒序数组输入,则共有M+1列)。
除第一列单独赋值外,其余列则按照共同的规律来赋值。
这里则详细说明其的规律性。
(1)对于第k 列(k>1):可分为2^(M+1-k)个计算单元,各计算单元间相互独立进行离散傅里叶变换。
(2)对于第k 列的第Mblock 个计算单元该单元总共含有2^(k-1)个数,数据的起始项是:data( (1+(Mblock-1)*2^(k-1)),k ),结束项是data( ( (Mblock)*2^(k-1)),k )(3)每个计算单元又可分为2^(k-2)个计算组,即蝶形单元对于每个组可以运用蝶形运算则第k 列的第Mblock 个计算单元的第grop 个计算组的两个元素的下表分别为: (Mblock-1)*2^(k-1)+grop 与(Mblock-1)*2^(k-1)+grop+2^(k-2)碟形单元所出现的系数为:121--grop k W然后根据蝶形运算便可进行程序的编写。
通过上述方法在MA TLAB 下编程,大概在35行左右,还包括倒序的程序在里面。
%DIT(时间抽取的基二FFT 算法程序)%程序输入为x(n),输出为y(n),要求n 是2的整数次幂function y=b2fft(x)N=length(x);L=log2(N);rev_x=zeros(1,N);for m=0:N-1bit_str=dec2bin(m); %将i 变成2进制数,为倒序操作做准备 dec2bin()将十进制数变成二进制数,结果为一字符串if length(bit_str)<LZ=zeros(1,(L-length(bit_str))); %保证倒序操作的成功,要求二进制位数始终是 N Z_str=num2str(Z); %将数字变为字符串bit_str=[Z_str,bit_str];endit_str=fliplr(bit_str); %fliplr 其作用是将一个数组的行倒置,而列的顺序则不变,倒置的意思是倒序显示rev_x(m+1)=x(bin2dec(it_str)+1);enddata=zeros(N,L+1);%进行第一级赋值data(:,1)=rev_x;%进行第K级赋值for k=2:L+1 %多少级(第一级为倒序后的数组)for Mblock=1:2^(L+1-k) %每级多少个块for grop=1:2^(k-2) %每个块分成多少个组coeff=cos(2*pi*(grop-1)/(2^(k-1)))-sin(2*pi*(grop-1)/(2^(k-1)))*i;data((Mblock-1)*2^(k-1)+grop,k)=data((Mblock-1)*2^(k-1)+grop,k-1)+coeff*data((Mblock-1)*2^(k-1)+grop+2^( k-2),k-1);data((Mblock-1)*2^(k-1)+grop+2^(k-2),k)=data((Mblock-1)*2^(k-1)+grop,k-1)-coeff*data((Mblock-1)*2^(k-1)+g rop+2^(k-2),k-1);endendend%输出L+1级数据,为傅立叶变换后的数据y=data(:,L+1);。
matlab编程实现傅里叶变换
傅里叶变换是信号处理和图像处理中的重要数学工具,可以将一个信号或图像从时域转换到频域。
MATLAB作为一款强大的数学软件,可以方便地实现傅里叶变换并进行相应的分析和处理。
本文将介绍如何使用MATLAB编程实现傅里叶变换,并探讨其在信号处理和图像处理中的应用。
一、MATLAB中的傅里叶变换函数在MATLAB中,可以使用fft函数来进行一维离散傅里叶变换(DFT)的计算,使用fft2函数进行二维离散傅里叶变换(DFT)的计算。
这两个函数的基本语法如下:1. 一维离散傅里叶变换Y = fft(X)其中,X是输入的一维信号(向量),Y是输出的一维频谱(向量)。
2. 二维离散傅里叶变换Y = fft2(X)其中,X是输入的二维图像(矩阵),Y是输出的二维频谱(矩阵)。
除了fft和fft2函数外,MATLAB还提供了ifft和ifft2函数用于进行离散傅里叶逆变换。
通过这些函数,我们可以方便地实现傅里叶变换和逆变换的计算。
二、MATLAB中的傅里叶变换实例为了更好地理解MATLAB中的傅里叶变换实现,我们可以通过一个具体的实例来进行演示。
假设我们有一个包含两个正弦波的信号,我们首先可以使用MATLAB生成这个信号,并对其进行傅里叶变换。
生成信号fs = 1000; 采样频率为1000Hzt = 0:1/fs:1-1/fs; 时间范围为1秒f1 = 50; 第一个正弦波的频率为50Hzf2 = 120; 第二个正弦波的频率为120Hzx = 0.7*sin(2*pi*f1*t) + sin(2*pi*f2*t); 生成包含两个正弦波的信号进行傅里叶变换N = length(x); 信号的长度X = fft(x)/N; 进行离散傅里叶变换,并进行归一化处理f = (0:N-1)*(fs/N); 计算频率轴figure;subplot(2,1,1);plot(f,abs(X)); 绘制频谱幅度title('单边频谱');xlabel('频率/Hz');ylabel('幅度');subplot(2,1,2);plot(f,angle(X)); 绘制频谱相位title('频谱相位');xlabel('频率/Hz');ylabel('相位');通过上面的实例,我们可以看到,MATLAB可以很方便地实现最常见的傅里叶变换,并且提供了丰富的绘图功能来呈现变换结果。
快速傅里叶变换FFT的matlab实现和FFT的简单应用
t=0:n/2-1;
for v=0:n/2-1; w=exp(-2*i*pi*t/n); end; %计算因子 w 结束
for m=1:nu;% 计算 x(k)开始 h=2^(m-1); k=1; while(k<n+1) for t=1:h; y=bitshift(k-1,nu-m,nu)+1; %求 w 的幂次数 xch(k)=xr(k)+w(y)*xr(k+h); k=k+1; end; for t=1:h; y=bitshift(k-1-h,nu-m,nu)+1; %求 w 的幂次数 xch(k)=xr(k-h)-xr(k)*w(y); k=k+1; end;
4
信号与系统课程设计
程序源代码及仿真图见附件 4。 四、总结 4.1 对 myfft 实现快速傅里叶变换的评价 本文基于时间抽选奇偶分解算法对 DFT 进行了改进,提出了快速傅里叶变换 FFT,并 用 Matlab 实现了 FFT,并用其对所给信号进行了频谱分析。在第一个实例里,利用 myfft 函数对离散信号 x[n] 进行了傅里叶变换得到它的频域函数和时域函数,从仿真图可以看出 myfft 实现的傅里叶变换时成功的。在第二个实例里面,也是利用 myfft 对信号序列进行傅 里叶变换,并对信号利用窗函数减少频谱间的干扰,较准确地分析了所给信号的频谱。 4.2 其它 FFT 算法简介 本文其实还只是快速傅里叶变换的一个简单实现而已。快速傅里叶变换,顾名思义, 它应该还有其它实现的算法。 本文用的是基于时间抽取奇偶分解的算法, 在常规的快速傅里 叶变换实现中,还有其它两种非常重要的算法:基于频率抽选奇偶分解算法和混合基算法。 其中混合基算法是运用最广泛的一种 FFT 算法, 并在很多领域取得了广泛的应用。 由于笔者 水平有限,便不再对上述两种算法进行深入的讨论,留待以后慢慢尝试! 4.3 FFT 的进一步深入应用 由于傅里叶变换在信号处理中具有举足轻重的作用,故 FFT 有着非常广泛的应用。下 一步的工作便是利用 myfft 算法设计一个 fir 滤波器, 多所给参杂了噪声的语音信号进行滤 波, 由于这个设计需要用到其它数字信号处理的知识, 可能要等到下学期学习了数字信号课 以后才能实现了。 4.4 课程设计之后的感悟 只能用一个字来形容:无奈,累!本来期末时间都要复习考试,可是还要做这个课程设 计,花掉我们很多的时间和精力,最后还搞出来一个不是十分满意的东西。哎,一个字:苦 不堪言! 不过,也并非只是感觉苦不堪言,也有感觉高兴的地方:学了 Matlab 了,小有收获, 还熬了夜,提前体验了一把工作加班到深夜的滋味,很不爽,但又很爽!
Matlab编程实现FFT变换及频谱分析的程序代码
Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)2007-10-08 sysop 点击: 436Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)内容1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%*************************************************************************%% FFT实践及频谱分析 %%*************************************************************************%%*************************************************************************%%***************1.正弦波****************%fs=100;%设定采样频率N=128;n=0:N-1;t=n/fs;f0=10;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(1);subplot(232);plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号y=2*pi*10t幅频谱图N=128'); grid;%求均方根谱sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱'); grid;%求功率谱power=sq.^2;figure(1);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形'); grid;%****************2.矩形波****************% fs=10;%设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);%作矩形波的时域波形xlabel('t');ylabel('y');title('矩形波时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('矩形波幅频谱图');grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('矩形波均方根谱');grid;%求功率谱power=sq.^2;figure(2);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('矩形波功率谱');grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('矩形波对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(2);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的矩形波波形');grid;%****************3.白噪声****************%fs=10;%设定采样频率t=-5:0.1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形xlabel('t');ylabel('y');title('白噪声时域波形');grid;%进行FFT变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);%求幅值f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);%做频谱图xlabel('频率(Hz)');ylabel('幅值');title('白噪声幅频谱图');grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('白噪声均方根谱');grid;%求功率谱power=sq.^2;figure(3);subplot(234);plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('白噪声功率谱');grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('白噪声对数谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(3);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的白噪声波形');grid;本文责任编辑: sysop相关文章? 请教:目前可有哪些用于EMC仿真的软件 - 08-18 10:01 am - 点击: 2718 发表评论查看评论加入收藏 Email给朋友打印本文如果你想对该文章评分, 请先登陆, 如果你仍未注册,请点击注册链接注册成为本站会员. 平均得分 0, 共 0 人评分1 2 3 4 5 6 7 8 9 10。