zoukankan      html  css  js  c++  java
  • 信号处理第二篇——接着谈正弦信号

    上一个章节对时限正弦信号进行了基础信号分析,这一章,继续分析其中的一些重要特性。

    如何区分两个频率相同,初相不同的两个信号,如下图所示:

     上述两个信号的频率是相同的,我们对上述两个信号进行FFT,得到幅频特性,如下图所示

     上图表明,两者具有相同的幅频特性,因此从幅频特性上,无法区分这两个信号。但频谱分析,除了从幅频特性出发,还可以从相频特性出发,我们得到两个信号的相频特性曲线如下图所示:

    上图结果表明,尽管两个信号的幅频特性一致,但是两个信号的相频特性是不同的,因此我们可以从相频率特性上区分这两个信号,而且相频特性具有奇对称的特点。我们再来关注下频率点对应的相位:对于初相为0的正弦信号,10Hz的地方,相位为-90°;对于初相为pi/3的正弦信号,10Hz的地方,相位为-30°。

    因此,对于正弦信号而言:幅频特性中对应的峰值点的相位,实际上与信号的初始相位有关,且等于初始相位-90°。而实际上,对于余弦信号的表达形式,幅频特性峰值点对应的相位实际上就等于信号的初始相位。

    另外的一个问题在于:

    如果一个接收信号中,包含了两个正弦回波信号,那么我们信号的截取时长需要为多长,才能从频谱上将这两个信号区分开呢?

    比如,对于信号:

     我们的信号持续时间Tc究竟取多长,从频谱上才能将两者区分开来?

    我们截取不同长度的信号进行FFT,进行信号频谱分析:

    1 信号S信号持续时长0.1s。

     对上述信号进行FFT,得到幅频特性如下图:

     上图结果中,零频以上只有一个峰,实际上是两个峰混叠在一起了,我们无法将这两个频率区分开。

    2 信号S信号持续时长0.5s。

      对上述信号进行FFT,得到幅频特性如下图:

     上图中,零频以上有两个峰,可见,从频谱上这两个信号可以区分。那么,信号持续时间取多长?,两个信号才能区分开呢?答案是:

     其中:

     即,信号的持续时间与混合信号频率的差值有关。只有当满足上述关系的时候,才能将两个信号从频谱上区分开。

    以上分析的matlab代码如下:

      1 %% 正弦信号频谱分析
      2 clear 
      3 close all
      4 clc
      5 %% signal
      6 A=1;                %幅度
      7 f=10;               %频率
      8 w=2*pi*f;           %
      9 p=0;                %相位
     10 %采样
     11 T=1;                %s        %观测时间
     12 fs=20*f;            %Hz       %采样频率
     13 d=1/fs;             %s        %采样间隔
     14 t0=-T/2:d:T/2;       %离散时间t
     15 s1=A*cos(w*t0+p);    %正弦信号
     16 figure(1)
     17 plot(t0,s1);
     18 title('s=sin(20pit)')
     19 xlabel('时间/s');
     20 ylabel('幅度');
     21 %% FFT
     22 NFFT = length(t0);
     23 FFTres  = fftshift(fft(s1,NFFT));
     24 FFTAmu = abs(FFTres);
     25 ft=(-NFFT/2:NFFT/2-1)*fs/NFFT; %频率序列
     26 % 求幅频曲线
     27 figure(2)
     28 plot(ft,FFTAmu)
     29 title('s=sin(20pit)')
     30 xlabel('频率/Hz');
     31 ylabel('幅度');
     32 % 求幅相曲线
     33 FFT_phase = angle(FFTres)*180/pi;
     34 figure(3)
     35 plot(ft,FFT_phase)
     36 title('s=sin(20pit)')
     37 xlabel('频率/Hz');
     38 ylabel('相位/角度制');
     39 %% 变换信号的初相
     40 %% signal1
     41 A=1;                %幅度
     42 f=10;               %频率
     43 w=2*pi*f;           %
     44 p=pi/3;                %相位
     45 %采样
     46 T=1;                %s        %观测时间
     47 fs=20*f;            %Hz       %采样频率
     48 d=1/fs;             %s        %采样间隔
     49 t0=-T/2:d:T/2;       %离散时间t
     50 s1=A*cos(w*t0+p);    %正弦信号
     51 figure(4)
     52 plot(t0,s1);
     53 title('s=sin(20pit+pi/3)')
     54 xlabel('时间/s');
     55 ylabel('幅度');
     56 %% FFT
     57 NFFT = length(t0);
     58 FFTres  = fftshift(fft(s1,NFFT));
     59 FFTAmu = abs(FFTres);
     60 ft=(-NFFT/2:NFFT/2-1)*fs/NFFT; %频率序列
     61 
     62 % 求幅频曲线
     63 figure(5)
     64 plot(ft,FFTAmu)
     65 title('s=sin(20pit+pi/3)')
     66 xlabel('频率/Hz');
     67 ylabel('幅度');
     68 % 求幅相曲线
     69 FFT_phase = angle(FFTres)*180/pi;
     70 figure(6)
     71 plot(ft,FFT_phase)
     72 title('s=sin(20pit+pi/3)')
     73 xlabel('频率/Hz');
     74 ylabel('相位');
     75 
     76 %% 将两个信号区分开来持续时长
     77 %% 处理接收两路的回波信号
     78 A=1;                %幅度
     79 f1=10;              %频率
     80 f2=15;
     81 w1=2*pi*f1;     
     82 w2=2*pi*f2;        
     83 p=0;
     84 %采样
     85 Tc=1/10;                %s        %观测时间
     86 fs=20*f2;            %Hz       %采样频率
     87 d=1/fs;             %s        %采样间隔
     88 t0=-Tc/2:d:Tc/2;       %离散时间t
     89 s1=A*cos(w1*t0+p)+A*cos(w2*t0+p);    %正弦信号
     90 figure(7)
     91 plot(t0,s1);
     92 title('s=sin(20pit)+s=sin(30pit)')
     93 xlabel('时间/s');
     94 ylabel('幅度');
     95 
     96 % 观察时长为1/10s
     97 FFTres  = fftshift(fft(s1,NFFT));
     98 FFTAmu = abs(FFTres);
     99 ft=(-NFFT/2:NFFT/2-1)*fs/NFFT; %频率序列
    100 figure(8)
    101 plot(ft,FFTAmu)
    102 title('信号观测时长T =1/10s')
    103 
    104 %观测时长为1/2s
    105 Tc=1/2;                %s        %观测时间
    106 fs=20*f2;            %Hz       %采样频率
    107 d=1/fs;             %s        %采样间隔
    108 t0=-Tc/2:d:Tc/2;       %离散时间t
    109 s1=A*cos(w1*t0+p)+A*cos(w2*t0+p);    %正弦信号
    110 
    111 figure(9)
    112 plot(t0,s1);
    113 title('s=sin(20pit)+s=sin(30pit)')
    114 xlabel('时间/s');
    115 ylabel('幅度');
    116 
    117 FFTres  = fftshift(fft(s1,NFFT));
    118 FFTAmu = abs(FFTres);
    119 ft=(-NFFT/2:NFFT/2-1)*fs/NFFT; %频率序列
    120 
    121 figure(10)
    122 plot(ft,FFTAmu)
    123 title('信号观测时长T =1/2s')
    124 %% 对比正弦信号频谱和指数信号频谱
    stay foolish,stay hungry
  • 相关阅读:
    如何规范自己的编程以及软件开发目录(二)
    关于README的内容
    关于编程编程规范以及开发目录的规范性
    第五章:条件、循环以及其他语句(上)
    第四章 当索引行不通时
    python-zipfile模块
    python-shutil模块
    python-sys模块
    python-os模块
    python-threading.Thread(多线程)
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/14529555.html
Copyright © 2011-2022 走看看