1. 程式人生 > >在MATLAB畫出一個正弦波

在MATLAB畫出一個正弦波

模擬訊號:

  正弦波三要素:

           幅度A,角頻率\omega,相位\varphi

            y=A sin\left ( \omega t+\varphi \right )

  角頻率\omega與頻率f的關係:

           要注意已知訊號的角頻率還是頻率?

             \omega =2\pi f

           頻率是Hz , 一秒幾次的概念,角頻率是rad/s , 一秒多少度的概念,2\pi 是一圈的弧度,一圈也就是一次的概念。

           週期: 圓形一圈,正弦一週,弧度 2\pi ,T=\frac{1}{f}=\frac{2\pi }{\omega } 

 MATLAB 離散訊號

      MATLAB中的訊號為離散訊號,而正弦訊號為 連續訊號,所以需要 取樣 將其 離散化

      取樣體現在   y=A sin\left ( \omega t+\varphi \right )    時間 t 的間隔  dt 的數值 

      取樣定理(nyquist取樣定理):  f_{s}\geqslant 2f 

       dt=1/ f_{s}

       根據以上要求在matlab中得到一個離散正弦訊號。

       但是以上不足以畫出一個滿意的正弦波影象如下圖,因為離散訊號的畫法就是我們所熟知的描點法,僅僅當f_{s}=2f 時,我們可以計算一下每個週期有多少個點:

                                   n=T/dt=T f_{s}=f_{s}/f=2

        一個週期內只有兩點,顯然是畫不出來一個正弦波的,如果讓我們均勻的描點法來畫正弦波的話,我認為要20個點,10個畫出來是三角波。我們再來逆向計算一下,若n=20, 則  f_{s}=?

         由上式可得                          f_{s}=nf=20f

         此時如下圖得到一個正弦波影象。

      以上為如何在matlab中畫出正弦訊號的一些分析,個人見解,僅供參考,如有錯誤,勞煩指正。

    附錄:matlab程式碼

%%  清記憶體 關閉視窗 準備工作
clear 
close all
clc

%%  signal
% 三要素
A=1;                %amplify
f=10;               %Hz
w=2*pi*f;           %rad/s
p=0;                %rad
%取樣
T=1;                %s        %觀測時間
fs=20*f;            %Hz       %取樣頻率
d=1/fs;             %s        %取樣間隔


t=-T/2:d:T/2;       %離散時間t
s1=A*sin(w*t+p);    %正弦訊號

figure(1)
plot(t,s1);
xlabel('時間/s');
ylabel('幅度');