当前位置:   article > 正文

菜鸟之MATLAB学习——FM0波形生成及FFT变换_matlab菜鸟

matlab菜鸟

首先声明:我是MATLAB初学者,只做笔记记录。

clc;
close all;

fdata=160*1000;   % 数据速率160k
T=1/fdata;        %信号周期

N_sample=10;   %每个周期的采样点数
dt=T/N_sample;

d0_1=[ones(1,N_sample/2),-1*ones(1,N_sample/2)];
d0_2=[-ones(1,N_sample/2),ones(1,N_sample/2)];

d1_1=[ones(1,N_sample)];
d1_2=-1*ones(1,N_sample);

N_data=100;
fm0_seq=randi([0,1],1,N_data);     % 产生N_data个0 1 交替的序列

FM0_WAVE=[];

   if fm0_seq(1)==0                %先判断第一个数据是 0 还是 1FM0_WAVE=[FM0_WAVE d0_1];
   else 
        FM0_WAVE=[FM0_WAVE d1_1];
   end

for i=2:N_data

    if  FM0_WAVE(length(FM0_WAVE))==-1 
        if fm0_seq(i)==0
            FM0_WAVE=[FM0_WAVE d0_1];
        else 
            FM0_WAVE=[FM0_WAVE d1_1];
        end
    else   
         if fm0_seq(i)==0
              FM0_WAVE=[FM0_WAVE d0_2];
         else
              FM0_WAVE=[FM0_WAVE d1_2];
         end
    end
end

fs=1/dt;       %采样频率
N_all=N_data*N_sample;   %总的采样点数
df=fs/N_all;

t=0:dt:(N_all-1)*dt;
f=0:df:(N_all-1)*df;

sf=fft(FM0_WAVE);
sf=fftshift(sf);                    %fft三件套
f=f-N_all*df/2;

subplot(2,1,1),plot(t,FM0_WAVE);
axis([0 (N_all-1)*dt -2 2]);
subplot(2,1,2),plot(f/1000,abs(sf));
xlabel("频率/kHz")

  • 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
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

波形及FFT变换

可以多运行几次,因为数据是随机的,每次的频谱也不一样。
在这里插入图片描述

在这里插入图片描述

FFT运算的理解

注意3个要素:采样频率、采样点数、频率分辨率(三者中只有两个变量是独立的)。

MATLAB是如何构建FFT算法的呢?MATLAB在计算时并不关注采样频率,也不关注采样间隔,只关注采样点数,即做多少个点的FFT,而我们想分析信号的频谱,就必须规定采样频率或者频率分辨率(二者取其一),并用plot函数(构成一 一映射关系)将其绘制即可。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号