公告版位
需要找什麼嗎? 左邊分類或許可以幫助你...

目前分類:[數學+程式語言] Matlab (4)

瀏覽方式: 標題列表 簡短摘要

由此程式碼驗證得知 "快速傅立葉轉換" 再進行 "快速傅立葉反轉換" 後的數據 (音波) 將保持不變。

y = wavread('E:\2.音樂\onj001.wav');

s = fft(y); % 快速傅立葉轉換
f = abs(s); % 取絕對值

y2 = ifft(s); % 快速傅立葉反轉換
f2 = abs(fft(y2)); % 快速傅立葉反轉換 後的結果 再進行一次快速傅立葉轉換

subplot(2,2,1), plot(f); % 原檔案的頻譜
subplot(2,2,2), plot(y); % 原檔案的音波
subplot(2,2,3), plot(f2); % 快速傅立葉反轉換後的頻譜

黃彥霖 發表在 痞客邦 留言(1) 人氣()

本範例使用外部 wav 音樂檔來進行 FFT (快速傅立葉轉換)

y = wavread('E:\2.音樂\onj001.wav');
s = abs(fft(y));

subplot(2,1,1), plot(s);    % 顯示頻譜
subplot(2,1,2), plot(y);    % 顯示波形

sound(y, 44100);

untitled

黃彥霖 發表在 痞客邦 留言(1) 人氣()

1. 最簡單的寫法 (單引號 的地方為 wav 路徑,而 44100 代表頻率):
    y = wavread('E:\2.音樂\onj001.wav');
    sound(y, 44100);

2. 自動取得頻率寫法:
    [y, hz] = wavread('E:\2.音樂\onj001.wav');
    sound(y, hz);

3. 畫波形 (未設定 X 軸時間):
    [y, hz] = wavread('E:\2.音樂\onj001.wav');

黃彥霖 發表在 痞客邦 留言(0) 人氣()

以下為 迴圈 跑 5 次 的 範例程式,fprintf 用法就像 C 語言 的 printf 用法一樣
,所以中間的 %d 也是代表 "整數" 的意思。

1 : 5 代表 1 累加到 5 間,累加數量為 1 (預設)
1 : 0.5 : 5 代表 1 累加到 5 間,累加數量為 0.5 (自訂)

程式碼:

for i = 1 : 5 
    fprintf ('現在執行第 %d 次 \n', i);

黃彥霖 發表在 痞客邦 留言(1) 人氣()