MATLAB应用1——MATLAB傅里叶函数自行封装
创始人
2024-03-28 19:48:50
0

 

 

 主程序:

%
ex=importdata('data3.txt');
tx = regexp(ex{1}, '\s+', 'split');%按照空格分隔字符串,成为单个cell
yx=str2double(tx);
plot(yx);
ww=yx(2500:9000)-2055;
Fyz_fft(ww,1000);

傅里叶封装函数:

function Fyz_fft(y,Fs)

% Demon:
% Fs = 128;       % 采样频率
% T = 1/Fs;       % 采样时间
% L = 256;        % 信号长度
% t = (0:L-1)*T; % 时间
% y = 5 + 7*cos(2*pi*15*t - 30*pi/180) + 3*cos(2*pi*40*t - 90*pi/180);   %cos为底原始信号

dataLen = length(y); %获取声音长度
t=(0:dataLen-1)/Fs;

subplot(3,1,1);
plot(t, y), title('Source'),grid;  %波形图
xlim([0,100]);
xlabel('Time(s)');
ylabel('Amplitude');

% Y = fft(X) 使用快速傅里叶变换算法返回向量X的离散型傅里叶变换
% Y = fft(X,n) 返回n点的离散傅里叶变换,如果向量X的长度小于n,函数要将向量X补零到长度n;如果向量X的长度大于n, 则函数阶段X使之长度为n。若X是矩阵,按相同方法对X进行处理。

N = 2^nextpow2(dataLen); %采样点数,采样点数越大,分辨的频率越精确,N>=L,超出的部分信号补为0
Y = fft(y,N)/N*2;   %除以N乘以2才是真实幅值,N越大,幅值精度越高
f = Fs/N*(0:1:N-1); %频率
A = abs(Y);     %幅值
subplot(3,1,2);plot(f(1:N/2),A(1:N/2));   %函数fft返回值的数据结构具有对称性,因此我们只取前一半
xlim([0,100]);
title('amplitude-frequency');
xlabel('frequency(Hz)');
ylabel('amplitude');

% P = angle(Y);   %相值
% subplot(3,1,3);plot(f(1:N/2),P(1:N/2));
% title('phase-frequency');
% xlabel('frequency(Hz)');
% ylabel('phase');

%  请参照 http://www.mathworks.com/support/tech-notes/1700/1702.html
xdft = Y(1:N/2+1);
psdx = (1/(Fs*N)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = f(1:N/2+1);
subplot(3,1,3);
plot(freq,10*log10(psdx));%注意这是dB显示,不然就成了频率谱了
% xlim([0,1000]);
xlabel('Frequency (Hz)');
ylabel('Power (dB)');

end

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...