资源描述:
《使用matlab的fft分析六脉动整流的谐波》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、matlab谐波分析总结一基本思路为直观分析显示整流装置的谐波特性,使用matlab的simulink搭建整流电路,利用matlab的fft函数分析其电压与电流波形的谐波特性,并利用matlab的绘图工具,直观的显示谐波的相关参数。输出详细参数到文件。包括以下想法:1:用simulink搭建一个由多个不同幅值及相位的正弦波,输出到workspace的simout参数,主要是为了验证算法的正确性。2:算出THD%二算法及验证1:Sine叠加输出sine.mdl文件其中含4个SineWave,其参数如下表所示。SinewaveAmpl
2、itudebiasFrequency(rad/sec)Phase(rad)SampleTime120.72*pi*500-120.502*pi*50*5Pi/180*90-13102*pi*50*9pi/180*45-140.302*pi*50*26Pi/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次
3、、26谐波的叠加。含基波、奇次、偶次、高次谐波。在基波上加了0.7的偏置,模拟直流分量。示波器输出到workspace的参数名仿真参数10个周波,每周波采样点2048个使用1/50/2048的采样频率,是为了每个周波采2048个点,便于准确的FFT分析。理论上可以分析1024次以内的谐波。simulink的scope的输出simulink的workspace的输出ScopeData.signals.values共10*2048个点。之所以采10个周波,是为了保证可以避开初始的过渡状态,虽然当前的仿真没有过渡状态,但六脉动整流如果负
4、载有电容的话会有。实际进行FFT分析时,只抽取一个稳定状态周期的2048个点。2:代码程序名分fenxi_FFT.m%基波频率为50HzN=2048*4;%每周波采2048个点fp=30;%拟显示的倍频次数,需小于N/2用于使前面的参数显示清晰wq=5;%稳定周期个数,为保证下行程序数组不出错,workspce的数据周期必须大于wq值kh=0.01;%幅值比例系数,输出到文本时太小的谐波参数不输出fid=fopen('output.txt','wt');%准备写入文件,文件在当前目录下fprintf(fid,'每周波采样点数=%d
5、',N);y=ScopeData.signals.values;%读取workspce数据,第一个点前面为示波器输出到workspce参数名t=0:0.02/N:0.02/N*(size(y)-1);%每个周期为0.02秒,每周期采N个点,共size(y)-1个点subplot(2,1,1);plot(t,y);xlabel('时间/s');ylabel('幅值');title('原始信号');gridon;subplot(2,1,2);pn=wq*N;%取数据的基准点,主要目的是等系统稳定plot(t(pn:pn+N-1),
6、y(pn:pn+N-1));%数据周期必须小于wq,将出错xlabel('时间/s');ylabel('幅值');title('抽取信号');gridon;figure(2);subplot(2,1,1);z=fft(y(pn:pn+N-1),N);mag=abs(z)/N*2;%/N*2还原为真实的幅值mag(1)=mag(1)/2;%直流幅值要再除以2f=0:N/2;%可分析N/2倍频率,N=128点时,可解析64倍频相关参数bar(f(1:fp),mag(1:fp));%频谱直方图bar火柴杆stem%bar(f(2:fp)
7、,mag(2:fp));%除去直流分量显示%bar(f(3:fp),mag(3:fp));%除去基波分量显示gridon;xlabel('频率/倍');ylabel('幅值');title('FFT分析结果');fprintf(fid,'直流分量=%8.4g',mag(1));fprintf(fid,'基波峰值=%8.4g',mag(2));%求THDuUhf=0;fori=3:(size(mag)-1)/2%去除直流与基波各次谐波平方加奈奎斯特频率为采样频率的一半if((mag(i)/mag(2))>kh)%输出各次谐波
8、电流fprintf(fid,'%d次谐波峰值%8.3gt%2.3g%%',i-1,mag(i),mag(i)/mag(2)*100);endUhf=Uhf+(mag(i))^2;endUhf=sqrt(Uhf);THDu=Uhf*100/ma