MATLAB信号处理与应用 读书笔记 一

完成了基本操作,今天组数也正常,需要对应解决fsctrl文件中的信号处理相关

  • 重点关注4傅里叶变换,6FIR滤波器,10信号处理中的应用

  • 字符的链接['aa','bb'];

    N1=8;N2=16;
    n=0:N-1;k1=0:N1-1;k2=0:N2-1;
    w=2pi(0:2047)/2048;
    Xw=(1-exp(-j4w))./(1-exp(-j*w));
    xn=[(n>=0)&(n<=4)];
    X1k=fft(xn,N1);
    X2k=fft(xn,N2);
    subplot(3,2,1);
    plot(w/pi,abs(Xw));
    xlabel('w/pi');ylabel('X1');
    subplot(3,2,2);
    plot(w/pi,angle(Xw));

  • FFT用DFT原理,理解起来还是吃力

    Fs=1000;
    T=1/Fs; %采样周期
    L=2000;
    t=(0:L-1)T; %绘图的时间点
    x=0.7
    sin(2pi50t)+sin(2pi700t); %真实信号
    y=x+2randn(size(t)); %噪声叠加
    subplot(121);
    % plot(Fs
    t(1:50),y(1:50));
    plot(Fst,x);
    title('时域图');
    xlabel('t(s)');
    ylabel('y(t)');
    NFFT=2^(nextpow2(L));
    Y=fft(y,NFFT)/L;
    f=Fs/2
    linspace(0,1,NFFT/2+1);
    subplot(122);
    plot(f,2*abs(Y(1:NFFT/2+1)));
    title('频谱');
    xlabel('f');
    ylabel('|Y(f)|');

FFT绘图部分,原信号:

叠加上随机噪声

plot画图,画连续的也需要进行点数离散化,点数够多,看起来就是连续的;

复制代码
NFFT=2^(nextpow2(L)); %得到离采样点数最近的指数

第一个要点,需要得到采样点对应的指数,这个指数在FFT中需要,若不是最近的指数,则求出的

实际使用L代替NFFT,得到的频点值完全是对应信号值,所以NFFT值意义在哪?

复制代码
Y=fft(y,NFFT)/L;   

y的值和点数进行FFT计算,结果除以y进行归一化;

复制代码
f=Fs/2*linspace(0,1,NFFT/2+1); 

用Linspace得到0~1内NFFT个点值,再乘以FS/2得到奈奎斯特采样区间轴

复制代码
plot(f,2*abs(Y(1:NFFT/2+1))); 

对应的Y取绝对值,实际为幅值,因为求得的Y为实数,由于频谱折叠,所以要乘以2。如若不加abs,则信号谱的虚部将被忽略,造成幅值很小。

如果用全谱来看,则fs/2是保留奈奎斯特区间,abs是得实部虚部幅值,2*是将折叠得幅值相加。

相关推荐
来自远方的老作者1 小时前
第10章 面向对象-10.4 继承
开发语言·python·继承·单继承·多继承·super函数
逻辑驱动的ken1 小时前
Java高频面试考点场景题09
java·开发语言·数据库·算法·oracle·哈希算法·散列表
小手cool1 小时前
如何在Java中根据另一个配对集合对一个集合进行排序
java·开发语言
升鲜宝供应链及收银系统源代码服务1 小时前
OMS 订单模块重构正式文档(一)---升鲜宝生鲜配送供应链管理系统
java·开发语言·重构·生鲜配送源代码·生鲜供应链源代码
qq_12084093712 小时前
Three.js 工程向:GLTFLoader 管线、Draco/KTX2 与资源管理
开发语言·javascript·ecmascript
下地种菜小叶2 小时前
定时任务系统怎么设计?一次讲清任务注册、分布式调度、幂等执行与失败补偿
java·开发语言·数据库·oracle·rabbitmq
csbysj20202 小时前
业务代表模式
开发语言
sghuter2 小时前
AI重塑工程师:未来核心能力全景图
开发语言·perl·composer·symfony
浪客川3 小时前
【百例RUST - 013】泛型
开发语言·后端·rust
逻辑诗篇3 小时前
基于AMD XC7K325T的信号处理板
信号处理