title('Fourier');xlabel('频率/HZ');ylabel('振幅');
ind=find(c==max(c),1,'first');%寻找最大值的位置
%%%%%%% ind = find(X, k) 或ind = find(X, k, 'first')
% 返回第一个非零元素k的索引值(顺序)。
% k必须是一个正数,但是它可以是任何数字数值类型。
x0=f(ind); %根据位置得到横坐标(频率)
y0=c(ind); %根据位置得到纵坐标(幅度)
plot(x0,y0,'ro');hold off
%%%%%%% hold on 和hold off,是相对使用的.通常是一个图上画两个曲线进行比较。
% 前者的意思是,你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存,都看得到
% 后者表达的是,你在当前图的轴(坐标系)中画了一幅图,此时,状态是hold off,则再画另一幅图时,原来的图就看不到了,在轴上绘制的是新图,原图被替换了
text(x0+1,y0-0.1,num2str(x0,'频率=%f'));
% text(x,y,'string')在图形中指定的位置(x,y)上显示字符串string1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
栗子1:给x(n)绘图
global n;
n=-5:5;
x=sin(pi*n/5);
subplot(3,2,1); %suplot定义fingure图形排列
%subplot(m,n,p)表示图排成m行,n列,p指的是你把曲线画到fingure中哪个图上,通常之后再加上plot(n,x);
stem(n,x,'.'); %将数据序列x从n值(即坐标(n,x)按照茎状形式画出并以'.'终止。
line([-5,6],[0,0]); %line([起点横坐标,终点横坐标],[起点纵坐标,终点纵坐标]);
%表示画出从(-5,0)到(6,0)的一条直线,而不是(-5,6)到(0,0).
axis([-5,6,-1.2,1.2]);
%axis([xmin xmax ymin ymax])来标注输出的图线的最大值与最小值,用来显示坐标范围。
%常与axis on/off来显示/关闭坐标轴上的标记,单位等
xlable('n');ylable('x(n)');1
2
3
4
5
6
7
8
9
10
11
12
栗子2和栗子3分别对应书本P95和P98
栗子2:对待测信号xa(t)=(1+cos(2*pi*100*t)).*cos(2*pi*600*t)进行谱分析,若用fs=3kHz频率抽样,抽样点数为512
clear;
clc;
fs=3000;
N=512;
n=0:N-1;t=n/fs;
x=(1+cos(2*pi*100*t)).*cos(2*pi*600*t);
y=fft(x,N);
mag=abs(y);
f=n*fs/N; %频率序列
subplot(2,1,1);plot(f,mag);
xlabel('频率/Hz');ylabel('振幅/X(k)');title('N=512,fs=3000HZ');grid on;
subplot(2,1,2);plot(1:N/2); %会出Nyquest频率之前随频率变化的振幅
xlabel('频率/Hz');ylabel('振幅/X(k)');title('Nyquest 图幅值');grid on;
% grid on开启网格线1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
可知频率响应在f=500,600,700处突出,可断定该信号有三个f等于上的主要分量。
以下摘自:
栗子3
%1.掌握DFT的概念和用法(DFT实质:有限长序列M傅里叶变换的有限点N的离散采样)
% 在频域分析信号分两种:
% (1).对确定性信号进行傅里叶变换,分析频谱信息。
% (2).随机信号的傅里叶信号不存在,转向研究它的功率谱。
% 功率谱是定义为时域信号傅氏变换模平方然后除以时间长度。是随机过程的统计平均概念,所表现的是单位频带内信号功率随频率的变换情况。
%2.利用DFT进行信号检测和谱分析
实验内容:
1.利用DFT计算信号功率谱。
t=0:0.001:6;
x=sin(2*pi*50*t)+sin(2*pi*120*t)+randn(1,length(t));
% A = randn(m,n) 或 A = randn([m n]):返回一个m*n的随机项矩阵。
% size(A):获取数组A的行数和列数
% length(A):获取数组长度(即行数或列数中的较大值)
Y=fft(x,512);
P=Y.*conj(Y)/512;
% '.*'运算符用于矩阵间对应元素的相乘,或数与数之间,数与矩阵之间的相乘。
%注:a*b表示矩阵a与矩阵b进行矩阵相乘。
% a.*b表示矩阵a中的元素与矩阵b中的元素按照相同位置进行相乘,得到的结果作为新矩阵中相同位置的元素。
% conj(A):返回A的共轭值
f=1000*(0:255)/512;
plot(f,P(1:256))1
2
3
4
5
6
7
8
9
10
11
12
13
2.进行信号检测。分析信号频谱对应的数字频率和模拟频率之间的关系。模拟信号x(t)=2*sin(4*pi*t)+5*cos(8*pi*t),以t=0.01n(0<=n<=N-1)进行采样,求N点DFT的幅度值.
subplot(2,2,1)
N=45;n=0:N-1;t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y));title('DFT N=45')
subplot(2,2,2)
N=50;n=0:N-1;t=0.01*n; q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y));title('DFT N=50')
subplot(2,2,3)
N=55;n=0:N-1;t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y));title('DFT N=55')
subplot(2,2,4)
N=60;n=0:N-1;t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y));title('DFT N=60')
%%%%%%%%%%%%注:X(k)为x(n)的DFT(x(ejw))在区间[0,2pi]上的N点等间隔采样1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
3.对2,进一步增加截取长度和DFT点数,如N加大到256,观察信号频谱的变化,分析产生这一变化的原因。
N=256;n=0:N-1;t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y));title('DFT N=256')1
2
3
4
5
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新