首先声明我是MATLAB初学者只做笔记记录。clc;close all;fdata160*1000;% 数据速率160kT1/fdata;%信号周期N_sample10;%每个周期的采样点数dtT/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_data100;fm0_seqrandi([0,1],1,N_data);% 产生N_data个01交替的序列FM0_WAVE[];iffm0_seq(1)0%先判断第一个数据是0还是1FM0_WAVE[FM0_WAVE d0_1];elseFM0_WAVE[FM0_WAVE d1_1];endfori2:N_dataifFM0_WAVE(length(FM0_WAVE))-1iffm0_seq(i)0FM0_WAVE[FM0_WAVE d0_1];elseFM0_WAVE[FM0_WAVE d1_1];endelseiffm0_seq(i)0FM0_WAVE[FM0_WAVE d0_2];elseFM0_WAVE[FM0_WAVE d1_2];end end endfs1/dt;%采样频率N_allN_data*N_sample;%总的采样点数dffs/N_all;t0:dt:(N_all-1)*dt;f0:df:(N_all-1)*df;sffft(FM0_WAVE);sffftshift(sf);%fft三件套ff-N_all*df/2;subplot(2,1,1),plot(t,FM0_WAVE);axis([0(N_all-1)*dt-22]);subplot(2,1,2),plot(f/1000,abs(sf));xlabel(频率/kHz)波形及FFT变换可以多运行几次因为数据是随机的每次的频谱也不一样。FFT运算的理解注意3个要素采样频率、采样点数、频率分辨率三者中只有两个变量是独立的。MATLAB是如何构建FFT算法的呢MATLAB在计算时并不关注采样频率也不关注采样间隔只关注采样点数即做多少个点的FFT而我们想分析信号的频谱就必须规定采样频率或者频率分辨率二者取其一并用plot函数构成一 一映射关系将其绘制即可。