You are on page 1of 5

Ex1

% 設定採樣頻率 fs 為 30 Hz
fs = 30;

% 建立一個向量 t,範圍為 [0,2π),共有 30 個元素


t = linspace(0, 2*pi, 30);

% 計算 x = sin(10t)
x = sin(10*t);

% 繪製圖表,其中包含線和標記
plot(t, x, '-o');

xlabel('t');
ylabel('sin(10t)');
% 計算 FFT
y = fft(x);

% 建立一個頻率向量 f,範圍為 0~29


f = 0:(30-1); % 因為 x 向量有 30 個元素,頻率範圍為 0~(30-1)

% 計算訊號的強度
intensity = abs(y) / 30; % 取絕對值是因為 FFT 結果可能為複數,而訊號強度需要
為實數,除以 30 是因為需要進行歸一化處理

% 繪製頻譜圖
figure,plot(f, intensity);

% 加上標題、x 軸標籤和 y 軸標籤


title('FFT of sin(10t)');
xlabel('Frequency (Hz)');
ylabel('Intensity');
ex2
% 設定採樣頻率 fs 為 10 Hz
fs = 10;

% 建立一個向量 t,範圍為 [0,2π),共有 10 個元素


t = linspace(0, 2*pi, 10);

% 計算 x = sin(10t)
x = sin(10*t);

% 繪製圖表,其中包含線和標記
plot(t, x, '-o');

% 加上標題、x 軸標籤和 y 軸標籤


title('sin(10t) vs. t (fs = 10 Hz)');
xlabel('t');
ylabel('sin(10t)');

% 計算 FFT 並繪製頻譜圖
X = abs(fft(x));
f = (0:length(X)-1)*(fs/length(X));
plot(f, X);
title('Amplitude Spectrum (fs = 10 Hz)');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
ex2-60
% 設定採樣頻率 fs 為 60 Hz
fs = 60;

% 建立一個向量 t,範圍為 [0,2π),共有 60 個元素


t = linspace(0, 2*pi, 60);

% 計算 x = sin(10t)
x = sin(10*t);

% 繪製圖表,其中包含線和標記
plot(t, x, '-o');

% 加上標題、x 軸標籤和 y 軸標籤


title('sin(10t) vs. t (fs = 60 Hz)');
xlabel('t');
ylabel('sin(10t)');

% 計算 FFT 並繪製頻譜圖
X = abs(fft(x));
f = (0:length(X)-1)*(fs/length(X));
plot(f, X);
title('Amplitude Spectrum (fs = 60 Hz)');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
當採樣頻率從高頻率變為低頻率時,採樣的間隔變長了,採樣的時間間隔變少
了,所獲得的離散時間信號的精度降低了,可能會錯過原始訊號中的高頻成分。
這將導致在傅立葉頻譜中出現顯著的頻譜泄漏,使其不同於在更高採樣頻率下
得到的頻譜。因此,改變採樣頻率會影響訊號的取樣點,進而導致傅立葉頻譜
產生變化。在傅立葉分析中,如果採樣點不足夠多,將無法完整地捕捉到原始
訊號中的高頻成分,這將導致傅立葉頻譜產生顯著的變化。
% 設定採樣頻率 fs 為 30 Hz
fs = 30;

% 建立一個向量 t,範圍為 [0,2π),共有 30 個元素


t = linspace(0, 2*pi, 30);

% 計算 x = sin(20t)
x = sin(20*t);

% 繪製圖表,其中包含線和標記
plot(t, x, '-o');

% 加上標題、x 軸標籤和 y 軸標籤


title('sin(20t) vs. t');
xlabel('t');
ylabel('sin(20t)');

% 進行快速傅立葉轉換
y = fft(x);

% 計算出傅立葉頻譜中的離散頻率
f = (0:length(y)-1)*fs/length(y);

% 繪製傅立葉頻譜圖
figure;
stem(f, abs(y));
title('Magnitude Spectrum of sin(20t)');
xlabel('Frequency (Hz)');
ylabel('Magnitude');

ex3
方法一
% 定義時間範圍和取樣頻率
Fs = 100; % 取樣頻率
t = linspace(0, 1, Fs);

% 定義 sin 波
x = (1.3)*sin(15*t) + (2.5)*sin(30*t);

% 計算 FFT
y = fft(x);

% 取絕對值,並將其平方
y = abs(y)

% 將 FFT 結果的標度除以信號長度的平方
y = y/length(x);

% 計算頻率向量
f = Fs*(0:length(x)-1)/length(x);

% 繪製圖形
plot(f,y)
xlabel('Frequency (Hz)')
ylabel('Intensity')方法二
% 定義時間範圍
t = linspace(0, 1, 100);

% 定義信號
x = (1.3)*sin(15*t) + (2.5)*sin(30*t);

% 進行 FFT 變換
X = fft(x);

% 計算頻譜
X_mag = abs(X)/length(X);

% 繪製頻譜圖
plot(X_mag);

% 設置圖形標籤和標題
xlabel('Frequency');
ylabel('Magnitude');
title('FFT of Sin Wave');

You might also like