基于MATLAB的谐波分析FFT
- 格式:doc
- 大小:511.00 KB
- 文档页数:15
目录(1)Matlab6.5以上版本软件; ..........................................................错误!未定义书签。
绪论. (1)1 公式分析及计算 (2)1.1傅里叶变换的原理 (2)1.2傅里叶变换的证明 (3)1.3 周期信号的分解 (3)1.4 方波的分解 (5)2 建模与仿真 (7)2.1建模 (7)2.2仿真 (8)3 仿真结果分析 (10)4 小结 (11)参考文献 (13)绪论方波是一种非正弦曲线的波形,通常会于电子和讯号处理时出现。
由于一般电子零件只有“高(1)”和“低(0)”两个值,方波就自然产生,所以理想方波只有“高”和“低”这两个值。
电流的波形为矩形的电流即为方波电流。
不论时间轴上下是不是对称的,只要是矩形就可叫方波,必要时,可加“对称”,“不对称”加以说明。
而在现实世界,方波只有有限的带宽。
因为方波可以快速从一个值转至另一个(即0→1或1→0),所以方波就用作时钟讯号来准确地触发同步电路。
但是如果用频率定义域来表示方波,就会出然一连串的谐波。
所以方波可用相应频率的基波及其奇次谐波合成。
在电路信号系统的分析中,随着电路规模的加大,微分方程的阶数以及联立后所得的方程的个数也随之加大,加上电器元件的多样化,这些都给解题运算分析电路系统带来了一定的困难。
传统的计算机编程语言,如FORTRAN、C语言等,虽然都可以帮助计算,但在处理高阶微分方程和大规模的联立方程组的问题时大量的时间和精力都花在矩阵处理和图形的生成分析等繁琐易错的细节上。
而MATLAB凭借其强大的矩阵运算能力、简便的绘图功能、可视化的仿真环境以及丰富的算法工具箱,已成为科研和工程技术人员的有力开发工具。
利用MATLAB不仅可以简单快速的求解电路方程,同时,MAYLAB提供的Simulink工具还可以直接建立电路模型,随意改变模型的参数,并且还可以快速得到仿真拟结果,进一步省去了编程的步骤。
基于MATLAB的电力谐波分析电力谐波是电力系统中常见的问题,可以导致电力设备故障、能耗增加以及电压波形失真等不良效果。
因此,对电力谐波进行分析和处理具有重要意义。
MATLAB是一种功能强大的工具,可以用于电力谐波分析。
一、电力谐波的概念和原理电力谐波是指在电力系统中,超过基波频率的功率频率成分。
它们是由非线性负载引起的,如电弧炉、变频器等。
谐波会导致电压和电流波形变形,使得电压谐波、电流谐波和功率谐波产生,严重时会导致设备损坏。
电力谐波分析的主要原理是通过傅里叶级数展开,将非线性负载引起的电压和电流信号分解为基波和谐波成分。
然后,可以计算谐波分量的谐波电流、谐波电压、相角等信息。
根据这些信息,可以评估电力系统中谐波的程度,并采取适当的措施进行补偿和抑制。
二、MATLAB工具箱的使用MATLAB有多个工具箱可以用于电力谐波分析,包括基本的波形分析工具箱、信号处理工具箱和工具箱的傅里叶分析工具。
1.使用波形分析工具箱进行谐波分析在波形分析工具箱中,有多种函数可以用于谐波分析,如fft、ifft、spectrogram等。
通过调用这些函数,可以对电压和电流信号进行傅里叶变换,得到频率和幅值谱。
然后,可以从频谱中提取出谐波分量的频率、幅值等信息。
2.使用信号处理工具箱进行谐波分析信号处理工具箱提供了更多用于谐波分析的函数,如stft、wavelet 等。
通过调用这些函数,可以对电压和电流信号进行时频分析,得到谐波分量的时频特性。
此外,还可以通过滤波等方法对谐波信号进行补偿和抑制。
3.使用傅里叶分析工具进行谐波分析MATLAB的傅里叶分析工具提供了多种方法进行谐波分析,如离散傅里叶变换(DFT)、快速傅里叶变换(FFT)等。
通过调用这些函数,可以对电压和电流信号进行频域分析,得到谐波分量的频谱特性。
然后,可以计算谐波电流、谐波电压、相角等信息。
三、电力谐波分析的步骤进行电力谐波分析时,可以按照以下步骤进行:1.数据采集:使用合适的传感器采集电压和电流信号数据。
基于MATLAB的谐波分析FFT概要谐波分析是一种用于分析信号频谱的方法,主要用于确定信号中存在的谐波成分。
在MATLAB中,谐波分析可以通过使用快速傅里叶变换(FFT)来实现。
本文将详细介绍基于MATLAB的谐波分析FFT的概要。
首先,快速傅里叶变换(FFT)是一种用于将时域信号转换为频域信号的数学技术。
它能够将信号分解为一系列频率成分,并显示每个成分的幅度和相位。
因为FFT算法在计算上非常高效,所以它成为了谐波分析的主要工具。
在MATLAB中进行谐波分析FFT时,首先需要准备要分析的信号。
信号可以是实际测量到的数据,也可以是经过仿真或计算得到的数据。
通常,信号是一个包含多个周期的数据序列。
然后,为了进行谐波分析,需要对信号进行预处理。
这包括对信号进行采样和量化。
采样是将连续信号转换为离散数据点的过程,而量化是将连续数据转换为离散数值的过程。
在MATLAB中,可以使用内置的函数来执行这些操作。
接下来,将使用MATLAB的FFT函数对预处理后的信号进行频谱分析。
FFT函数将信号转换为复数数组表示形式,并将其分解为频率成分。
它返回一个包含信号频率谱的长度为N的向量,其中N是输入信号的长度。
在得到频谱后,可以使用MATLAB的plot函数来可视化频谱。
可以将频谱以线性刻度或对数刻度绘制,以便更好地显示信号的谐波成分。
通过分析频谱中的峰值,可以确定信号中存在的谐波频率和对应的幅度。
谐波分析不仅可以用于确定信号中存在的谐波成分,还可以用于分析信号的频率特性和频带宽度。
通过对谐波分析结果进行进一步处理和计算,可以得到信号的功率谱密度、频谱峰值等相关信息。
在进行谐波分析FFT时,还需要注意一些常见的问题和注意事项。
例如,由于FFT是一种离散傅里叶变换方法,它要求输入信号的长度必须是2的幂。
如果信号长度不符合这个要求,可以使用MATLAB的补零技术进行填充。
此外,为了改善谐波分析的准确性,还可以对信号进行窗函数处理。
基于MATLAB的FFT算法实现摘要:本文研究了基于MATLAB的快速傅里叶变换(FFT)算法的实现。
傅里叶变换是一种重要的信号处理工具,广泛应用于图像处理、语音处理、通信系统等领域。
FFT是一种快速计算傅里叶变换的算法,可以大大提高傅里叶变换的计算效率。
本文详细介绍了FFT算法的原理和实现步骤,并通过MATLAB编程实现了FFT算法,并对不同信号和数据集进行了测试和分析。
实验结果表明,基于MATLAB的FFT算法可以有效地计算傅里叶变换,并且具有较高的精确性和稳定性。
关键词:MATLAB、FFT、傅里叶变换、计算效率、精确性、稳定性一、引言傅里叶变换是一种将时域信号转换到频域的重要工具,可以解析复杂的周期信号和非周期信号。
傅里叶变换在图像处理、语音处理、通信系统等领域有广泛的应用。
由于传统的傅里叶变换算法计算复杂度较高,耗时较长,因此需要一种快速计算傅里叶变换的算法。
快速傅里叶变换(FFT)算法是一种通过分治和递归的方法,将傅里叶变换计算的时间复杂度从O(N^2)降低到O(NlogN),大大提高了傅里叶变换的计算效率。
二、FFT算法原理FFT算法是一种递归的分治算法,它将长度为N的输入序列分为两个长度为N/2的子序列,然后通过对子序列进行FFT变换,再利用蝶形运算(butterfly operation)将结果合并,最终得到整个输入序列的傅里叶变换结果。
FFT算法的关键步骤包括序列分组、计算旋转因子、递归计算和合并。
通过这些步骤,可以将傅里叶变换的计算复杂度从O(N^2)降低到O(NlogN)。
三、基于MATLAB的FFT算法实现步骤1.读入输入序列,并将序列长度补齐为2的指数幂,方便进行分组计算。
2.进行FFT算法的递归计算。
首先将输入序列分为两个长度为N/2的子序列,然后对子序列进行递归计算,最终得到子序列的傅里叶变换结果。
3.计算旋转因子。
根据旋转因子的定义,计算出旋转因子的实部和虚部。
基于MATLAB的谐波分析FFT概要谐波分析是一种用于研究信号频谱及频率成分的技术。
它可以通过将信号分解为不同频率的谐波分量,来揭示信号的频率结构和频率成分之间的关系。
谐波分析可以在多个领域中得到广泛应用,包括音频处理、振动分析、机械故障诊断等。
快速傅里叶变换(Fast Fourier Transform,FFT)是一种常用的谐波分析方法,它通过对信号进行频域离散傅里叶变换(Discrete Fourier Transform,DFT)来实现。
FFT算法是一种高效的计算DFT的方法,其时间复杂度为O(N log N),相较于直接计算DFT的O(N^2)时间复杂度更加高效。
因此,FFT方法广泛应用于信号处理领域中。
谐波分析的基本思想是,将时域信号转换为频域信号,并通过对频域信号的分析,得出信号的频率分量和振幅。
谐波分析的关键步骤包括:数据预处理、信号转换、频谱分析和结果可视化。
在MATLAB中,进行谐波分析主要涉及以下几个函数:1. fft(x):该函数用于计算信号x的FFT,返回信号的频域表示。
2. abs(X):该函数用于计算X的幅度谱,即频域信号的振幅值。
3. angle(X):该函数用于计算X的相位谱,即频域信号的相位角度。
4. fftshift(X):该函数用于将频域信号X的零频分量移动到频谱的中心。
在进行谐波分析时,可以按照以下步骤进行:1.载入信号数据并进行预处理。
预处理可以包括去除直流分量、去除噪声等。
2. 使用fft(函数计算信号的FFT,得到频域信号X。
3. 使用abs(函数计算频谱的幅度谱,得到信号的频率分量和振幅。
4. 使用angle(函数计算频谱的相位谱,得到信号的相位信息。
5. 使用fftshift(函数将频域信号X的零频分量移动到频谱的中心,以便于结果的可视化。
6. 可视化频谱分析结果。
可以使用plot(函数绘制频率-振幅图,也可以使用stem(函数绘制频谱,以直观地展示信号的频域特征。
matlab谐波提取Matlab是一种功能强大的数学软件,广泛应用于科学计算和工程领域。
在信号处理中,谐波提取是一项重要的分析任务。
本文将介绍如何使用Matlab进行谐波提取,并给出一些实际应用示例。
什么是谐波?在信号处理中,谐波是指频率为原始信号频率的整数倍的分量。
例如,原始信号频率为100Hz,那么它的谐波分量可以是100Hz、200Hz、300Hz等。
谐波分量通常具有不同的振幅和相位,它们与原始信号之间存在一种特殊的关系。
在Matlab中,我们可以使用fft函数来进行频域分析。
该函数将时域信号转换为频域信号,使我们能够观察到信号的频谱特征。
对于谐波提取,我们可以通过观察频谱图来确定谐波分量的存在。
下面是一个简单的示例。
假设我们有一个包含谐波分量的信号,频率分别为100Hz、200Hz和300Hz,振幅分别为1、0.5和0.3。
我们可以通过以下代码来生成这个信号:```matlabfs = 1000; % 采样率t = 0:1/fs:1-1/fs; % 时间向量f1 = 100; % 第一个谐波频率f2 = 200; % 第二个谐波频率f3 = 300; % 第三个谐波频率A1 = 1; % 第一个谐波振幅A2 = 0.5; % 第二个谐波振幅A3 = 0.3; % 第三个谐波振幅x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t) + A3*sin(2*pi*f3*t); % 生成信号```生成信号后,我们可以使用fft函数将其转换为频域信号,然后观察频谱图。
以下是相应的代码:```matlabN = length(x); % 信号长度X = fft(x); % 进行频域变换X_mag = abs(X)/N; % 计算频谱幅值f = (0:N-1)*(fs/N); % 构造频率向量plot(f,X_mag); % 绘制频谱图xlabel('频率(Hz)');ylabel('幅值');```运行上述代码后,我们将得到一个频谱图,横轴表示频率,纵轴表示幅值。
FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。
有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。
这就是很多信号分析采用FFT变换的原因。
另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。
虽然很多人都知道FFT是什么,可以用来做什么,怎么去做,但是却不知道FFT之后的结果是什意思、如何决定要使用多少点来做FFT。
现在就根据实际经验来说说FFT结果的具体物理意义。
一个模拟信号,经过ADC采样之后,就变成了数字信号。
采样定理告诉我们,采样频率要大于信号频率的两倍,这些我就不在此罗嗦了。
采样得到的数字信号,就可以做FFT变换了。
N个采样点,经过FFT之后,就可以得到N个点的FFT结果。
为了方便进行FFT运算,通常N取2的整数次方。
假设采样频率为Fs,信号频率F,采样点数为N。
那么FFT之后结果就是一个为N点的复数。
每一个点就对应着一个频率点。
这个点的模值,就是该频率值下的幅度特性。
具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。
而第一个点就是直流分量,它的模值就是直流分量的N倍。
而每个点的相位呢,就是在该频率下的信号的相位。
第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。
例如某点n所表示的频率为:Fn=(n-1)*Fs/N。
由上面的公式可以看出,Fn所能分辨到频率为为Fs/N,如果采样频率Fs 为1024Hz,采样点数为1024点,则可以分辨到1Hz。
1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。
基于MATLAB的谐波分析谐波分析在信号处理和电力系统中非常重要,它可以帮助我们理解信号的频率成分以及电力系统中的谐波问题。
MATLAB是一个功能强大的工具,可以用来进行谐波分析,下面将介绍基于MATLAB的谐波分析方法,并说明其在实际应用中的作用。
首先,我们需要知道什么是谐波。
在信号处理中,谐波是指信号中频率为整数倍于基频的成分。
在电力系统中,谐波是指频率为60Hz或50Hz的交流电中的非整数倍成分。
谐波分析的目的是确定信号中的谐波频率和幅值。
在MATLAB中,我们可以使用FFT(快速傅里叶变换)来进行谐波分析。
FFT可以将时域信号转换为频域信号,从而可以获得信号的频率成分。
首先,我们需要准备一个信号,并将其表示为MATLAB中的向量。
然后,我们可以使用FFT函数对信号进行变换,得到信号的频率成分。
```matlabt = 0:1/fs:1-1/fs; % 时间向量f=1000;%信号频率x = sin(2*pi*f*t); % 正弦波信号```接下来,我们可以使用FFT函数对信号进行变换,并计算信号的幅频响应。
然后,我们可以选择性地显示特定频率范围内的幅频响应。
```matlabX = fft(x); % 对信号进行傅里叶变换Mag_X = abs(X); % 计算傅里叶变换的幅频响应frequencies = (0:length(X)-1)*(fs/length(X)); % 计算频率向量%选择显示特定频率范围内的幅频响应f_min = 0; % 最小频率f_max = 2000; % 最大频率indices = find(frequencies >= f_min & frequencies <= f_max);plot(frequencies(indices), Mag_X(indices))xlabel('Frequency (Hz)')ylabel('Amplitude')```上述代码将生成频率范围在0Hz到2000Hz之间的幅频响应图。
基于Matlab的DFT及FFT频谱分析基于Matlab的DFT及FFT频谱分析一、引言频谱分析是信号处理中的重要任务之一,它可以揭示信号的频率特性和能量分布。
离散傅里叶变换(DFT)及快速傅里叶变换(FFT)是常用的频谱分析工具,广泛应用于许多领域。
本文将介绍通过Matlab进行DFT及FFT频谱分析的方法和步骤,并以实例详细说明。
二、DFT及FFT原理DFT是一种将时域信号转换为频域信号的离散变换方法。
它将信号分解成若干个正弦和余弦函数的叠加,得到频率和幅度信息。
FFT是一种高效的计算DFT的算法,它利用信号的对称性和周期性,将计算复杂度从O(N^2)降低到O(NlogN)。
FFT通过将信号分解成不同长度的子序列,递归地进行计算,最终得到频谱信息。
三、Matlab中的DFT及FFT函数在Matlab中,DFT及FFT可以通过内置函数进行计算。
其中,DFT使用函数fft,FFT使用函数fftshift。
fft函数可直接计算信号的频谱,fftshift函数对频谱进行频移操作,将低频移到频谱中心。
四、Matlab中DFT及FFT频谱分析步骤1. 读取信号数据首先,将待分析的信号数据读入到Matlab中。
可以使用内置函数load读取文本文件中的数据,或通过自定义函数生成模拟信号数据。
2. 时域分析通过plot函数将信号数据在时域进行绘制,以观察信号的波形。
可以设置合适的坐标轴范围和标签,使图像更加清晰。
3. 信号预处理针对不同的信号特点,可以进行预处理操作,例如去除直流分量、滤波等。
这些操作可提高信号的频谱分析效果。
4. 计算DFT/FFT使用fft函数计算信号数据的DFT/FFT,并得到频谱。
将信号数据作为输入参数,设置采样频率和点数,计算得到频谱数据。
5. 频域分析通过plot函数将频谱数据在频域进行绘制,观察信号的频率特性。
可以设置合适的坐标轴范围和标签,使图像更加清晰。
6. 结果解读根据频谱图像,分析信号的频率成分、幅度分布和峰值位置。
基于MATLAB的FFT算法实现一、引言快速傅里叶变换(FFT)是一种非常重要的数学方法,广泛应用于信号处理、图像处理、通信等领域。
其主要功能是将时域信号转换为频域信号,对信号的频谱进行分析和处理。
本文基于MATLAB实现了FFT算法,并对其原理和应用进行了简要介绍。
二、FFT算法原理FFT算法通过将一个N点的离散傅立叶变换(DFT)分解为多个较小的DFT来加快计算速度。
其主要思想是利用信号的对称性质和旋转因子的周期性特点进行计算。
具体步骤如下:1.首先将输入信号序列划分为偶数下标和奇数下标的两个子序列;2.对每个子序列分别进行DFT运算;3.将得到的DFT结果进行合并。
三、MATLAB实现FFT算法在MATLAB中,我们可以利用内置函数fft(来实现FFT算法。
以下为MATLAB代码示例:```matlabfunction X = my_fft(x)N = length(x);if N == 1X=x;elsen=0:N-1;W_N = exp(-1i*2*pi/N*n);x_even = x(1:2:end);x_odd = x(2:2:end);X_even = my_fft(x_even);X_odd = my_fft(x_odd);X = [X_even + W_N(1:N/2).*X_odd, X_even - W_N(1:N/2).*X_odd];endend```在上述代码中,x为输入信号序列,N为序列的长度。
如果序列长度为1,则直接返回该序列;否则,利用递归将序列拆分为两个子序列,并进行DFT运算。
最后将两个子序列的DFT结果进行合并,得到最终的FFT 结果。
四、FFT算法的应用FFT算法在信号处理领域有着广泛的应用。
其中最常见的应用包括频谱分析、滤波器设计、图像处理等。
1.频谱分析:FFT可以将时域信号转换为频域信号,计算信号的频谱,分析信号的频率成分和能量分布。
通过频谱分析,我们可以了解到信号的频率特性,从而对信号进行相应的处理和判断。
基于Matlab的电力谐波分析
摘要:谐波采样中存在的信号混叠问题,本文通过数据加窗和插值算法进行电力谐波的精确分析,此方法可以解决快速傅里叶变换(FFT)算法精度不高,特别是相位计算误差较大的问题。
关键词:谐波采样加窗插值快速傅里叶变换
采用快速傅立叶变换(FFT)进行电力系统谐波检测具有正交、完备等许多优点,在电能质量仿真分析取得了广泛的应用,但此方法很难做到同步采样和整周期截断,会导致频率、幅值和相位等参数不准,尤其是相位误差很大,无法对谐波进行准确的测量。
本文引入了加窗插值FFT算法,此算法硬件设计实现简单,具有良好的时频局部化特性,精度和实时性都均能满足谐波检测的实际要求。
通过用FFT算法和汉宁窗修正算法所得的谐波频率、幅值和相位的误差图分析可得,用FFT算法进行谐波检测相位误差较大大,计算结果精确度较差,利用本文算法可以有效减少了泄漏,抑制谐波之间、杂波之间及噪声的干扰,可以精确测量到各次谐波电压和电流的幅值及相位,完全可以满足电力系统的分析要求。
基于Matlab中FFT函数的电力谐波分析方法
李达义;陈乔夫;贾正春
【期刊名称】《电测与仪表》
【年(卷),期】2002(039)007
【摘要】对电力系统谐波电压(或电流)进行了仔细分析,得出基于连续信号傅立叶级数的各次谐波系数的计算公式,并推导了该计算公式与Matlab函数FFT计算出的谐波系数的关系.实例分析证明了基于连续信号傅立叶级数的谐波系数计算公式及其与FFT所计算出系数关系的正确性.
【总页数】4页(P23-26)
【作者】李达义;陈乔夫;贾正春
【作者单位】华中科技大学电气与电子学院,武汉,430074;华中科技大学电气与电子学院,武汉,430074;华中科技大学电气与电子学院,武汉,430074
【正文语种】中文
【中图分类】TM933.4
【相关文献】
1.基于Nuttall自卷积窗四谱线插值FFT的电力谐波分析方法 [J], 刘冬梅;杨重良;张艳;梅恒荣
2.基于MATLAB中FFT函数在电力谐波分析中的应用 [J], 郑俊观;王硕禾
3.基于加窗插值FFT的电力谐波测量理论:(I)窗函数研究 [J], 潘文;钱俞寿
4.基于 Hanning 自相乘窗的电力谐波 FFT 分析方法 [J], 陈坚;汪伟;王少华;杨世海
5.一种新型高精度窗函数的FFT电力谐波分析方法仿真与研究 [J], 莫建平;董亮
因版权原因,仅展示原文概要,查看原文内容请购买。
matlab谐波分析总结一基本思路为直观分析显示整流装置的谐波特性,使用matlab的simulink搭建整流电路,利用matlab的fft函数分析其电压与电流波形的谐波特性,并利用matlab的绘图工具,直观的显示谐波的相关参数。
输出详细参数到文件。
包括以下想法:1:用simulink搭建一个由多个不同幅值及相位的正弦波,输出到workspace的simout参数,主要是为了验证算法的正确性。
2:算出THD%二算法及验证1:Sine叠加输出sine.mdl文件其中含4个Sine Wave,其参数如下表所示。
Sinewave Amplitude bias Frequency(rad/sec)Phase(rad) SampleTime1 2 0.7 2*pi*50 0 -12 0.5 0 2*pi*50*5 Pi/180*90 -13 1 0 2*pi*50*9 pi/180*45 -14 0.3 0 2*pi*50*26 Pi/180/(-135) -1表达的波形为f(t)=2*sin(2*pi*50*t) +0.5*sin(2*pi*50*5*t+pi/2)+1*sin(2*pi*50*9*t+pi/4) +0.3*sin(2*pi*50*26*t-pi*3/4)为不同幅值与相位的50Hz的基波,5次、9次、26谐波的叠加。
含基波、奇次、偶次、高次谐波。
在基波上加了0.7的偏置,模拟直流分量。
示波器输出到workspace的参数名仿真参数10个周波,每周波采样点2048个使用1/50/2048的采样频率,是为了每个周波采2048个点,便于准确的FFT分析。
理论上可以分析1024次以内的谐波。
simulink的scope的输出simulink的workspace的输出ScopeData.signals.values共10*2048个点。
之所以采10个周波,是为了保证可以避开初始的过渡状态,虽然当前的仿真没有过渡状态,但六脉动整流如果负载有电容的话会有。
maxwell 电机气隙磁密与用matlab进行fft谐波分析1.对电机进行静态场分析,分析完后,进入后处理2.需要在气隙中间画一条圆弧线。
点开deometry菜单,点creat再选Arc 如下图所示。
然后输入圆弧的中心(0,0)回车。
在下一个界面输入起始点坐标。
最后一个界面输入这条弧线上的采样点数(250),圆弧角90度,圆弧的分段数目(250),名字以及线的颜色,最后回车,就会得到下图的圆弧了。
3. 需要得到气隙磁密。
打开后处理计算器,依次选择qty—B,即选择磁密矢量。
选择geom—line—airgap_line, 即选中刚才画的那条弧线。
选择unitvect—2d normal,求取圆弧线的径向分量。
选择dot(点乘),求取圆弧线上的B 的径向分量。
再选一遍那个圆弧线,然后点 2d plot,就会出现那个磁密分布图了。
4. 虽然maxwell本身也可以做fft分析,但小弟还是喜欢把数据导出来在matlab 中进行分析,这样更灵活一些。
导出数据。
点击plot菜单—save as—2d plot。
在弹出的对话框中输入数据文件的名字。
(小弟实在找不到更好的办法导出数据了,如有哪位达人有更好的方法,请赐教。
小弟在此谢谢了。
)5. 对气隙磁密进行谐波分析。
将第四步中生成的.dat文件拷出来放到一个文件夹中(保证matlab和数据文件的路径相同)。
然后将matlab文件也拷贝到这个文件夹中。
打开这个m文件,输入Ns=500(需要进行分析的采样点个数,由于我们在maxwell中只分析了一个磁极下的磁密,所以只有半个周期,我们需要通过镜像生成后半个周期,这样总采样点个数为250*2=500)。
Order是需要分析的谐波次数,输入11就是分析到11次谐波。
运行,就得到下面的两个图了,第一个是原始波形,基波分量以及各高次谐波;第二个是个谐波分量的幅值大小柱状图。
这样一个电机气隙磁密谐波分析就完成了。
clcclear all;format long;Ns=500;order=11;%**********************read the position and flux density************************fid=fopen('','r'); %open the original filefidnew = fopen('','w'); %write the new filewhile feof(fid)==0tline = fgetl(fid); %tlineif ~ischar(tline), break, endtemp=abs(tline);Nlength=length(tline);isemptyline=0; %if Nlength==0isemptyline=1;endallspace=0; %isspace=0;for i=1:NlengthT=temp(i);if T==32isspace=isspace+1;endif isspace==Nlengthallspace=1;breakendendfindalpha=0; %for j=1:NlengthT=temp(j);if ((T>=65)&(T>=90))|((T>=97)&(T>=122)) findalpha=1;break;endendif (~findalpha)&(~allspace)&(isemptyline==0) % fprintf(fidnew,tline);fprintf(fidnew,'\n');endendfclose(fid);fclose(fidnew);fid1=fopen('','r');flux_position =fscanf(fid1,'%f',[2,Ns]);fclose(fid1);%********************************read file finish***************************************** flux_position=flux_position';pos=flux_position(:,1);flux=flux_position(:,2);figure;plot(pos,flux,'r');%plot origional waveform hold on;grid on;fft1=fft(flux,Ns);j=0;amp_har=zeros(1,(order+1)/2);for m=1:2:orderj=j+1;fft1=fft(flux,Ns);fund_ele_front=fft1(m+1);fund_ele_back=fft1(Ns+1-m);amp_har(j)=(abs(fund_ele_front))/Ns*2; fft1=0*fft1;fft1(m+1)=fund_ele_front;fft1(Ns+1-m)=fund_ele_back;fft1=ifft(fft1,Ns);fft1=real(fft1);plot(pos,fft1);hold on;endk=(1:2:order);figure;bar(k,amp_har);grid on;%peak_b=max(fft1)%rms_b=*peak_b。
目录摘要 (2)Abstract (2)1:绪论 (2)1.1课题背景 (2)1.2谐波的产生 (3)1.3电网中谐波的危害 (5)1.4研究谐波的重要性 (5)2:谐波的限制标准和常用措施 (7)2.1国外谐波的标准和规定 (8)2.1.1谐波电压标准 (8)2.1.2谐波电流的限制 (9)2.2我国谐波的标准和规定 (9)2.2.1谐波电压标准 (10)2.2.2谐波电流的限制 (11)2.3谐波的限制措施 (12)3:谐波的检测与分析 (15)3.1电力系统谐波检测的基本要求 (15)3.2国内外电力谐波检测与分析方法研究现状 (15)3.3谐波的分析 (18)3.3.1电力系统电压(或电流)的傅立叶分析 (19)3.3.2基于连续信号傅立叶级数的谐波分析 (19)4:电力谐波基于FFT的访真 (21)4.1快速傅立叶变换的简要和计算方法 (21)4.1.1快速傅立叶变换的简要 (21)4.1.2快速傅立叶变换的计算方法 (21)4.2 FFT应用举例 (22)5:结论 (28)附录: (28)参考文献: (30)致谢: (30)基于MATLAB的电力谐波分析学生:指导老师:电气信息工程学院摘要:电力系统的谐波问题早在20世纪20年代就引起人们的注意,到了50年代和60年代,由于高压直流输电技术的发展,发表了有关换流器引起电力系统谐波问题的大量论文。
70年代以来,由于电力电子技术的飞速发展,各种电力电子装置在电力系统、工业、交通及家庭中的应用日益广泛,谐波所造成的危害也日趋严重。
世界各国都对谐波问题予以充分的关注。
本文首先对目前国内外电力谐波检测与分析方法进行了综述与展望,并对电力谐波的基本概念、性质和特征参数进行了详细的分析,给出了谐波抑制的措施。
并得出基于连续信号傅立叶级数的各次谐波系数的计算公式,推导了该计算公式与MATLAB函数FFT计算出的谐波系数的关系。
实例证明:准确测量各次谐波参数,对电力系统谐波分析和抑制具有很大意义,可确保系统安全、可靠、经济地运行。
目录(1)Matlab6.5以上版本软件; ..........................................................错误!未定义书签。
绪论. (1)1 公式分析及计算 (2)1.1傅里叶变换的原理 (2)1.2傅里叶变换的证明 (3)1.3 周期信号的分解 (3)1.4 方波的分解 (5)2 建模与仿真 (7)2.1建模 (7)2.2仿真 (8)3 仿真结果分析 (10)4 小结 (11)参考文献 (13)绪论方波是一种非正弦曲线的波形,通常会于电子和讯号处理时出现。
由于一般电子零件只有“高(1)”和“低(0)”两个值,方波就自然产生,所以理想方波只有“高”和“低”这两个值。
电流的波形为矩形的电流即为方波电流。
不论时间轴上下是不是对称的,只要是矩形就可叫方波,必要时,可加“对称”,“不对称”加以说明。
而在现实世界,方波只有有限的带宽。
因为方波可以快速从一个值转至另一个(即0→1或1→0),所以方波就用作时钟讯号来准确地触发同步电路。
但是如果用频率定义域来表示方波,就会出然一连串的谐波。
所以方波可用相应频率的基波及其奇次谐波合成。
在电路信号系统的分析中,随着电路规模的加大,微分方程的阶数以及联立后所得的方程的个数也随之加大,加上电器元件的多样化,这些都给解题运算分析电路系统带来了一定的困难。
传统的计算机编程语言,如FORTRAN、C语言等,虽然都可以帮助计算,但在处理高阶微分方程和大规模的联立方程组的问题时大量的时间和精力都花在矩阵处理和图形的生成分析等繁琐易错的细节上。
而MATLAB凭借其强大的矩阵运算能力、简便的绘图功能、可视化的仿真环境以及丰富的算法工具箱,已成为科研和工程技术人员的有力开发工具。
利用MATLAB不仅可以简单快速的求解电路方程,同时,MAYLAB提供的Simulink工具还可以直接建立电路模型,随意改变模型的参数,并且还可以快速得到仿真拟结果,进一步省去了编程的步骤。
MATLAB具有数值计算功能;图形处理及可视化功能;可视化建模及动态仿真功能等等。
它给用户带来的是最直观,最简洁的程序开发环境。
它的语言简洁紧凑,使用方便灵活,程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。
同时,它的运算符也很丰富。
由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
它的程序的可移植性,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
本文应用MATLAB来验证定理:方波可用相应频率的基波及其奇次谐波合成。
1 公式分析及计算1.1傅里叶变换的原理任何具有性质周期为T 的波函数()f t 都可以表示为三角函数所构成的级数之和,即:∑∞=++=10)sin cos (21)(n n n t n b t n a a t f ωω (1)其中:t 为时间,ω为角频率。
ω=Tπ2(T 为周期),第一项01a 2为直流分量。
图1 方波所谓周期性函数的傅里叶变换(Fourier transform )就是将周期性函数张凯成直流分量,基波和所有n 次谐波的叠加。
图1所示的方波可以写成函数形式:h (0≤t <2T )()f t =-h (-2T ≤t <0)在这里,h 为常数2。
很明显,此方波为奇函数,并且它没有常数项,同时,它是一个周期为T 的函数,所以我们可以用傅里叶级数来表示这个函数。
()f t =∑∞=--1])12sin[()121(4n t n n hωπ(2) 我们把它展开,可以得到:)7sin 715sin 513sin 31(sin 4)( ++++=t t t t ht f ωωωωπ (3)1.2傅里叶变换的证明下面,我们要从数学角度来证明为什么公式(3)能成立。
由于这是一个奇函数,常数项0a 可以用积分函数计算出来:2202a =()0TTf x dt T -=⎰所以其常数项不存在,即0a =0,下面开始计算n a 与n b :222=()cos()TT n a f x n t dt T ω-⎰020222()cos()cos()TT h n t dt h n t dt T T ωω-=-+⎰⎰[][]020222sin()sin()T T h h n t n t T n T n ωωωω-=-+0=222=()sin()TT n b f x n t dt T ω-⎰[][]020222cos()cos()TT h h n t n t T n T n ωωωω-=-+ 2[1(1)]n hn π=-- 由上式可知,当n =2,4,6,时,0n b =;当n =1,3,5,时,4n hb n π=。
然后我们将n a 与n b 都带入公式(1),就可以得到公式(3):)7sin 715sin 513sin 31(sin 4)( ++++=t t t t ht f ωωωωπ 如果我们取的项越多,就会越逼近原本的方波函数。
1.3 周期信号的分解周期信号是定义在(-∞, ∞)区间,每隔一定的时间T ,按相同规律重复变化的信号,它可表示为f(t)=f(t+mT)式中m 为任意整数。
时间T 称为该信号的重复周期,简称为周期。
需要指出的是,只有当周期信号满足狄里赫利条件时,才能展开为傅里叶级数。
狄里赫利条件是:1)函数在任意有限区间内连续,或只有有限个第一类间断点(当t 从左或右趋于这个间断点时,函数有有限的左极限和右极限) 2)在一周期内,函数有有限个极大值或极小值。
设有周期信号f(t),它的周期是T ,角频率Ω=2πF=Tπ2,它可分解为 (2-1)上式中系数a n ,b n 称为傅里叶系数。
为简便, 式积分区间(t 0, t 0+T )取为(-2T ,2T)或(0,T )。
考虑到正、余弦函数的正交条件,可得傅里叶系数a n =⎰-222TTT f (t)cos(n Ωt)dt, n=0,1,2,…… (2-2) b n =⎰-222TTT f (t)sin(n Ωt)dt, n=0,1,2,…… (2-3)式中T 为函数f(t)的周期,Ω=Tπ2为角频率,由上述两式,傅里叶系数a n 和b n 都+Ω++Ω+Ω++Ω++Ω+Ω+=t n b t b t b t n a t a t a a t f n n sin 2sin sin cos 2cos cos 2)(21210是n 的函数,其中a n 是n 的偶函数,即a n -= a n ;而b n 是n 的奇函数,既有b n -=- b n将式(2-1)中同频率项合并,可写成如下形式 f(t)=++Ω++Ω+)2cos()cos(222110ϕϕt A t A A …… =)cos(210n n n t n A A ϕ+Ω+∑∞= (2-4) 式中 00a A =A n =22b a +,n=1,2,……n ϕ=-arctan(nna b ) 如将式(2-4)的形式化为(2-1)的形式,他们系数之间的关系为 a 00A =a n n n A ϕcos =,n=1,2,……b n n n A ϕsin -=,式(2-4)表明,任何满足狄里赫利条件的周期函数可分解为直流和许多余弦(或正弦)分量。
其中第一项2A 是常数项,它是周期信号中所包涵的直流分量;式中第二项A )cos(11ϕ+Ωt 称为基波或一次谐波,它的角频率与原周期信号相同,A 1是基波振幅,1ϕ是基波初相角;式中第三项A )2cos(22ϕ+Ωt 称为二次谐波,它的频率是基波频率的两倍,A 2是二次谐波振幅,2ϕ是其初相角。
以此类推,还有三次、四次、……谐波。
一般而言,A )cos(n n t n ϕ+Ω称为n 次谐波,A n 是n 次谐波的振幅,n ϕ是其初相角。
式(2-4)表明,周期函数可以分解为各谐波分量。
1.4 方波的分解设方波信号f(t)的周期为T ,宽度为2T,将其展开为傅里叶级数由式(2-2)和(2-3)可得⎰-Ω=22)cos()(2T T n dtt n t f Ta=dt t n TT )cos()1(202Ω-⎰-+dtt n TT )cos()1(220Ω⎰()[]()[]02sin 1220sin 12T t n n T T t n n T ΩΩ•+-Ω-Ω•考虑到T π2=Ω,可得=n a()()()⎰⎰Ω+Ω-=-2002sin 2sin 12TT n dtt n T dt t n T b()()[]02cos 1220cos 12T t n n T T t n n T Ω-Ω•+-ΩΩ•=()[]⋯⋯=⋯⋯==-=,5,3,1n ,6,4,240cos 12n n n n πππ将它们代入到式(2-1),得到信号的傅里叶级数展开式为()()()()⎥⎦⎤⎢⎣⎡⋯+Ω+⋯+Ω+Ω+Ω=t n t t t t f sin n 15sin 513sin 31sin 4)(π,n=1,3,5,……它只含一、三、五…奇次谐波分量。
下图中画出了一个周期的方波组成情况,由图可见,当它包含的谐波分量愈多时,波形就愈接近原来的方波信号()t f (图中虚线所示),其均方误差愈小,还可以看出,频率较低的谐波,其振幅较大,他们组成方波的主体,而频率较高的高次谐波振幅较小,它们主要影响波形的细节,波形中所包含的高次谐波愈多,波形的边缘愈陡峭。
(a )基波 (b )基波“+”三次谐波(c )基波+三次谐波+五次谐波 (d )基波+三次谐波+五次谐波+七次谐波 由图中还可以看出,合成波形所包含的谐波,除间断点附近外,它愈接近于原方波信号。
在间断点附近,随着所含谐波次数的增高,合成波形的尖峰愈靠近间断点,但尖峰幅度并未明显减小。
可以证明,即使合成波形所含谐波次数n ∞→时,在间断点处仍有约9%的偏差,这种现象称为吉布斯现象。
在傅里叶级数的项数取得很大时,间断点处尖峰下的面积非常小以致趋近于零,因而在均方的意义上合成波形同原方波的真值之间没有区别。
2 建模与仿真2.1建模上文中,我们证明了一个以原点为奇对称中心的方波可以用奇次正弦波的叠加来逼近。
()f t 可以简化为()y t :111()sin sin 3sin 5sin(21)3521y t t t t k t k =++++-+- (4)如果我们能验证()y t 是方波,那么我们可以得出()f t 也是方波,只是()f t 的方波的幅值是()y t 幅值的4hπ倍。
已知方波的宽度为π,周期为2π,我们可以用MATLAB 程序来检验这种逼近的程度与特征。
程序如下:t = 0:.01:2*pi; % 设定一个时间数组, 有101 个点y = sin(t);plot(t,y),figure(gcf),pause % 频率为w=1(f=1/2π)的正弦基波 y = sin(t) + sin(3*t)/3; plot(t,y), pause % 叠加三次谐波 y = sin(t) + sin(3*t)/3 + sin(5*t)/5 + sin(7*t)/7 + sin(9*t)/9; plot(t,y) % 用1, 3, 5, 7, 9 次谐波叠加% 为了绘制三维曲面, 要把各次波形数据存为一个三维数组, 因此必须重新定义y, 重编程。