FSPM12/10反电势FFTmatlab出图码
%作反电势频谱图
%J是基波频率
J=FFTmatrix(3,1);
%FFTmatrix是以数组形式(矩阵)形式导入的FFT全部数据
%根据极对数与频次成正比得到谐波阶次
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) 设置条形的相对宽度以控制组中各个条形的间隔。将 width 指定为标量值。bar(x,y) 在 x 指定的位置绘制条形。
%绘制FFTmatrix第二列、第三列、第四列的条图。
xlabel('谐波阶次');
ylabel('电压幅值(V)');
title('反电势频谱分布图')
grid;
%计算THD
b1=FFTmatrix(3,2);
b2=FFTmatrix(3,3);
b3=FFTmatrix(3,4);
%取出每一列数据的基频有效值
i=1;
s=0;
r=size(FFTmatrix,1)
%取出FFTmatrix的行数
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)