#!/usr/bin/env python # coding: utf-8 # ## 實驗一: Python 程式語言初見面 # # 用滑鼠點選以下程式碼,並按下"Play"鈕執行看看結果
# # 若想要在家中電腦執行以下程式,請前往 https://store.continuum.io/cshop/anaconda/ 下載Anaconda Python 軟體 # # 實驗開始步驟: # # (1)點右上角按鈕下載此份文件"ipython notebook" # # (2)將 SandS_lab1.ipynb 存放至"我的文件" # # (3)按下開始工具列->附屬應用程式->命令提示字元 來開啟命令列視窗 # # (4)於命令列鍵入 ipython notebook 指令來開啟 Jupyter 視窗 # # (5)開啟SandS_lab1.ipynb 開始以下實驗作答 # In[1]: #coding: utf-8 get_ipython().run_line_magic('matplotlib', 'inline') import numpy as np import matplotlib.pyplot as plt x=np.array([0,0,0,0,1,1,1,1,0,0,0,0]) plt.plot(x,'ro-') # ## 問題一 # (1)按加號新增一個"Markdown"區塊,描述你看到了什麼。
# (2)再按加號新增一個"code"區塊,嘗試畫出 "三個帽子"的波形
# (按加號後,點選 'Cell Toolbar' 左方是下拉式選單,選擇 CODE) # **************************************************************************************** # ## 實驗二: Python 之資料顯示以及np 陣列 # 用滑鼠點選以下程式碼,並按下"Play"鈕執行看看結果
# In[5]: #coding: utf-8 import numpy as np t=np.arange(0,1,0.1) print(t) print("這是 np.arange(0,1,0.1)的結果:" + str(t)) print("加上一些換行字元\n\n\n" + "換行的結果是這樣\n") t=np.arange(0,1,0.01) print("這是 np.arange(0,1,0.01)的結果:") print(t) sumt=sum(np.arange(0,10,1)) print("\n\n\n這是 sum(np.arange(0,10,1))的結果:" +str(sumt)) # ## 問題二 # 新增一個"Markdown"區塊,將以下問題之答案寫下來。
# (1)請推論 np.arange 這個函數的用處,以及三個輸入值的意義。
# (2)新增一個"code"區塊,利用python 程式碼,計算100以下偶數之總合。 # **************************************************************************************** # # ## 實驗三 : 弦波的頻率以及繪圖 # 用滑鼠點選以下程式碼,並按下"Play"鈕執行看看結果
# In[6]: #coding: utf-8 get_ipython().run_line_magic('matplotlib', 'inline') import numpy as np import matplotlib.pyplot as plt t=np.arange(0,1,0.01) pi=np.pi curve=np.sin(2*pi*10*t); curve2=np.sin(2*pi*5*t); plt.plot(t,curve,'b',t,curve2,'r'); # ## 問題三 # # (1)假設橫軸時間單位為秒,請問curve及curve2各為幾Hz弦波(也就是在一秒內走了幾個週期)?
# (新增一個"Markdown"區塊,回答此問題)

# (2)又我們如何改變指令,畫出一個 3 Hz的Cosine波呢?
# (新增一個"CODE"區塊,回答此問題) # **************************************************************************************** # ##實驗四 : 影像運算 # 用滑鼠點選以下程式碼,並按下"Play"鈕執行看看結果
# In[1]: #coding: utf-8 get_ipython().run_line_magic('matplotlib', 'inline') import numpy as np import matplotlib.pyplot as plt x=np.array([0,0,0,1,1,1,1,0,0,0]) y=np.array([x,x,x,x,x,x,x,x,x,x]) print(y) print(y.shape) plt.figure(1) plt.imshow(y,cmap='gray',interpolation='nearest') y=np.array([x/5.,x/4.,x/3.,x/2.,x/1.,x,x,x,x,x]) plt.figure(2) plt.imshow(y,cmap='gray',interpolation='nearest') # ## 問題四 # * (1)請問y 矩陣的大小為何?
# * (2)試完成一個10x10的矩陣,顯示一個白色十字。 # * (新增一個"CODE"區塊,回答此問題) # **************************************************************************************** # ## 實驗五 FIR三點平均 濾波器 # # ### 用滑鼠點選以下程式碼,並按下"Play"鈕執行看看結果
# In[16]: get_ipython().run_line_magic('matplotlib', 'inline') import numpy as np import matplotlib.pyplot as plt n=np.arange(100) w_hat=0.5 x_n=np.exp(1.0j*w_hat*n) x_n_1=np.exp(1j*w_hat*(n-1)) x_n_2=np.exp(1j*w_hat*(n-2)) y=(x_n+x_n_1+x_n_2)/3 plt.figure(figsize=(15,5), dpi=300) plt.plot(np.real(x_n),'r*-') plt.plot(np.real(x_n_1),'g*-') plt.plot(np.real(x_n_2),'b*-') params = {'backend': 'ps', 'xtick.labelsize': 24, 'ytick.labelsize': 24,} plt.rcParams.update(params) plt.figure(figsize=(15,5), dpi=300) plt.plot(np.real(x_n_2),'r*-') plt.plot(np.real(y),'b*-') print ("Amplitude: %f" % np.abs(y)[0]) params = {'backend': 'ps', 'xtick.labelsize': 24, 'ytick.labelsize': 24,} plt.rcParams.update(params) # In[11]: ii=0 for w_hat in np.arange(-np.pi,np.pi,0.1): x_n=np.exp(1j*w_hat*n) x_n_1=np.exp(1j*w_hat*(n-1)) x_n_2=np.exp(1j*w_hat*(n-2)) y=(x_n*1/3+x_n_1*1/3+x_n_2*1/3) if ii==0: w_hat_all=np.array(w_hat) y_abs=np.array(np.abs(y)[0]) else: w_hat_all=np.append(w_hat_all,w_hat) y_abs=np.append(y_abs,np.abs(y)[0]) ii+=1 plt.plot(w_hat_all,y_abs) # ## 問題五 # ### (1) 三點平均濾波器是何種濾波器? # ### (2) 嘗試將頻率測試範圍由-pi~pi 改成-3pi~3pi 結果為何? # ### (3) 嘗試畫出y[n]=x[n]-x[n-1]之頻率響應 # In[ ]: