FSPM12/10反電勢FFTmatlab出圖碼
%作反電勢頻譜圖
?
%J是基波頻率
?
J=FFTmatrix(3,1);
%FFTmatrix是以數(shù)組形式(矩陣)形式導(dǎo)入的FFT全部數(shù)據(jù)
%根據(jù)極對數(shù)與頻次成正比得到諧波階次
?
order=FFTmatrix(:,1)./J;
%FFTmatrix(:,1)表示第一列所有元素(這里正是頻率、時間),點乘 . 表示第一列所有元素與基頻相除獲得諧波階次。?
?
%繪制條狀頻譜圖
?
bar(order,FFTmatrix(:,2),0.4);
%bar(order,FFTmatrix(:,3),0.4);
%bar(order,FFTmatrix(:,4),0.4);
%bar(x,y,width) 設(shè)置條形的相對寬度以控制組中各個條形的間隔。將 width 指定為標(biāo)量值。bar(x,y) 在 x 指定的位置繪制條形。
%繪制FFTmatrix第二列、第三列、第四列的條圖。
xlabel('諧波階次');
?
ylabel('電壓幅值(V)');
?
title('反電勢頻譜分布圖')
?
grid;
?
%計算THD
?
b1=FFTmatrix(3,2);
b2=FFTmatrix(3,3);
b3=FFTmatrix(3,4);?
%取出每一列數(shù)據(jù)的基頻有效值
i=1;
?
s=0;
r=size(FFTmatrix,1)
%取出FFTmatrix的行數(shù)
while i<=length(r)
?
? ? ? ?x1=FFTmatrix(i,2)*FFTmatrix(i,2);
?
? ? ? ?s=s+x1;
?
? ? ? ?i=i+1;
?
end
%計算所有諧波與基波的比值? 方和根?
?
? ? THD=sqrt(s)/b1;
?
? ? sprintf('THD=%2.2f%%',THD*100)