Matlab-/Simulink 波形FFT分析图 绘制
Simulink FFT分析图导出至Visio文件后需重新编辑
若果想要将其他多余部分删除还需要取消组合,删除网格等操作
本程序的目的便是为了解决上述问题,简化后续操作,实现matlab只出图可以直接用于汇报、文章初稿
第一步,matlab中将想要实现FFT分析的数据输入scope
第二步,修改示波器配置
双击打开scope-右键属性配置-记录:变量名称、保存格式
(本人为22a版本,中文,需自行对应英文格式)
第三步,运行仿真
结束后工作区便出现同名称结构体数据
第四步,同文件夹运行。m程序文件
注意:需根据实际需要修改数据,具体可见注释部分
%% FFT Analysis
FFTDataInput.time=t'; %时间信号导入,列
FFTDataInput.signals.values=y; % 幅值信号导入,列
FFTDataInput.signals.dimensions=1; % 单列数据,e.g.若为三相电压/电流,此值为3
FFTDataInput.signals.label=''; % 以下不用修改
FFTDataInput.signals.title='';
FFTDataInput.signals.plotStyle=0;
FFTDataInput.blockName='';
FFTDATAa = power_fftscope(FFTDataInput); %% 生成FFTDATA结构体
% 以下内容需要人为设定
FFTDATAa.input = 1; %% 输入变量数
FFTDATAa.signal = 1; %% 通道选择
FFTDATAa.startTime = t(1); %% 起始时刻,不可为0
FFTDATAa.cycles = 5; %% 参与FFT的周期数
FFTDATAa.fundamental = 50; %% 基波周期
FFTDATAa.maxFrequency = 100000; %% FFT最大频率
FFTDATAa_update = power_fftscope(FFTDATAa);%% 更新结构体,该结构体内容为最终FFT分析结果
% 以上内容需要人为设定
frequency=FFTDATAa_update.freq;%频率
Mag=FFTDATAa_update.mag;%幅值
Mag_fund=FFTDATAa_update.magFundamental;%基波幅值
Thd=FFTDATAa_update.THD;%百分之
Fundstr=num2str(Mag_fund);
THDstr=num2str(Thd);
FFTplotflag=1;% 幅值:1,占基波比例2;
figure(3)
Titleplot1=['Fundamental(50Hz)=' Fundstr '(V), THD=' THDstr '%'];%数值转化为字符串,修改时注意单位,默认为 V
if FFTplotflag==1
bar(frequency,Mag,'facecolor','b','EdgeColor','k');hold on;%柱状图,若要曲线图,可将bar修改为plot、semilogx
else
bar(frequency,100*Mag/Mag_fund,'facecolor','b','EdgeColor','k');hold on;%柱状图
end
% axis([0 200,0 0.14]);%设置横纵坐标范围
title(Titleplot1);
ylabel('\rm\fontname{Times New Roman}Mag(% of Fundamental)');
xlabel('\rm\fontname{Times New Roman}Frequency(Hz)');
set(gca,'FontSize',12,'Fontname', 'Times New Roman');
set(gcf,'unit','normalized','position',[0.1,0.1,0.4,0.3]);
运行即可得所需FFT分析结果