matlab关于FFT频谱分析以及数据导出

%% //数字信号综合实验1:Matlab程序
%% //作者:alans
%% //日期:2023.2.5

%% 初始设置
% 清空工作空间,关闭无关页面
clc;
clear;
close all;

%绘图变量
font_size = 12; axis_size = 10; line_width = 2; legend_size = 10.5; marker_size = 12;
figure_width = 14; figure_height = 8; BiaValue = 0;

%% //原信号
%  //y = 3*sin(2*pi*10*t) + sin(2*pi*40*t) + sin(2*pi*200*t);

%% //绘制原信号波形
t = 0:0.0001:10;
y = 3*sin(2*pi*10*t) + sin(2*pi*40*t) + sin(2*pi*200*t);

figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, y, 'b-', 'LineWidth', line_width) 
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 1])
ylim([-6 6])
set(gca,'XTick',0:0.25:1)
set(gca,'YTick',-6:3:6)
xlabel('时间(s)','FontSize',font_size,'FontName','STSONG')
ylabel('信号幅值','FontSize',font_size,'FontName','STSONG')
title('原信号波形','FontSize',font_size,'FontName','STSONG')

%% // 采样,采样频率:100Hz,采样时长:1s
t = 0:0.01:1;
y = 3*sin(2*pi*10*t) + sin(2*pi*40*t) + sin(2*pi*200*t);

figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, y, 'b-', 'LineWidth', line_width) 
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 1])
ylim([-6 6])
set(gca,'XTick',0:0.25:1)
set(gca,'YTick',-6:3:6)
xlabel('时间(s)','FontSize',font_size,'FontName','STSONG')
ylabel('信号幅值','FontSize',font_size,'FontName','STSONG')
title('原信号波形','FontSize',font_size,'FontName','STSONG')

%% // 信号分析
% 数据长度
datalength = length(y);
% 对数据进行FFT
yFFT = fft(y, datalength);
mag = abs(yFFT);
%幅值归一化
mag = mag*2/datalength;
pha = angle(yFFT)*180/pi;
%对无效相位进行置0
for i = 1:datalength
    if(mag(1,i)<0.3)
        pha(1,i) = 0;
    end
end
%序列坐标
n = 0:datalength-1;
%采样频率
fs = 1/0.01;
%序列频率
f = (0:datalength-1) * fs/datalength;

figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
stem(f(1:datalength/2), mag(1:datalength/2),'b-', 'LineWidth', line_width)

set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 50])
ylim([0 4])
set(gca,'XTick',0:10:50)
set(gca,'YTick',0:1:4)
xlabel('频率(Hz)','FontSize',font_size,'FontName','STSONG')
ylabel('幅值','FontSize',font_size,'FontName','STSONG')
title('采样信号的频域分析','FontSize',font_size,'FontName','STSONG')

figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
stem(f(1:datalength/2), pha(1:datalength/2),'b-', 'LineWidth', line_width)

set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 50])
%ylim([0 4])
set(gca,'XTick',0:10:50)
%set(gca,'YTick',0:1:4)
xlabel('频率(Hz)','FontSize',font_size,'FontName','STSONG')
ylabel('相位','FontSize',font_size,'FontName','STSONG')
title('采样信号的频域分析','FontSize',font_size,'FontName','STSONG')

%% //滤波器 低通滤波
load('Filter_E3.mat')

filtercoe = Num;
y_Filter = filter(filtercoe, 1, y);

%绘制滤波后的信号
figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, y_Filter, 'b-', 'LineWidth', line_width) 
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 1])
ylim([-6 6])
set(gca,'XTick',0:0.25:1)
set(gca,'YTick',-6:3:6)
xlabel('时间(s)','FontSize',font_size,'FontName','STSONG')
ylabel('信号幅值','FontSize',font_size,'FontName','STSONG')
title('滤波后的信号波形','FontSize',font_size,'FontName','STSONG')

 %%提取数据

 %% filename = 'data.xlsx';
 %% obj = get(gca,'children');
 %%    x = get(obj,'xdata');
 %%    y = get(obj,'ydata');
 %%    x = x(:);
 %%    y = y(:);
 %%    M = [x y];
 %%   save(filename,'M','-ascii');

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB GUI 频谱分析仪是一种功能强大且易于使用的图形用户界面工具,用于对信号进行频谱分析。这个GUI可以帮助用户对信号的频谱特性进行可视化和分析。 该频谱分析仪具有以下主要功能和特点: 1. 信号输入:用户可以通过选择从文件导入信号或实时采集信号来进行频谱分析。用户可以选择不同类型的信号输入设备,如麦克风、声卡或外部仪器,以满足不同需求。 2. 信号预处理:该GUI提供了多种信号预处理功能,如时域窗函数、滤波器和去噪。这些功能可以帮助用户改善信号质量,减少噪声干扰,从而提高频谱分析的准确性。 3. 频谱分析方法:此GUI支持多种频谱分析方法,如快速傅里叶变换(FFT)、功率谱密度估计(PSD)和自相关函数。用户可以根据需要选择适当的分析方法,并设置相关参数。 4. 结果可视化:分析完成后,该GUI会将频谱结果以图形方式显示出来。用户可以查看信号的频谱图、频谱密度图、功率谱图等。此外,用户还可以对图像进行缩放、平移和标记,以更好地分析和理解结果。 5. 导出和保存:用户可以将分析结果导出为图片或数据文件,以便后续处理或报告生成。此外,GUI还提供了快速保存和加载分析设置的功能,方便用户保存和共享分析参数。 总之,MATLAB GUI 频谱分析仪是一款功能全面、操作简便的工具,可帮助用户对不同类型的信号进行频谱分析,并提供了丰富的可视化和分析功能。无论是学术研究、工程设计还是实际应用频谱分析,这个GUI都能提供有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值