0
我正在用Matlab創建連續聲音(40赫茲)並用節拍調製聲音(請參閱下面的簡單代碼)。我的問題是我想在EEG實驗中使用這種聲音作爲刺激,但是節拍和正在進行的40Hz頻率會產生很多頻率。我怎樣才能減少頻率的數量?我還用fft來檢查我用這種刺激產生的極端頻率(太多)。有沒有更好的方法來創建一個sinmple節拍?我做錯了什麼?我希望這已經夠清楚了,謝謝用Matlab在節拍中編程聲音
clear all
Accent = 3; % amplitude for the beat
Freq = 40; % frequency
Dur = 4; % Duration
Samp = 48000; % sampling points
%% signal
Sine = sin((1:Dur*Samp)*2*pi*Freq/Samp);
Beat = repmat([ones(1,Samp/8)*Accent ones(1,Samp/8) ones(1,Samp/8)*Accent ones(1,Samp/8) repmat(ones(1,Samp/8),1,4)],1,Dur);
S = Sine.*Beat;
S = S/max(abs(S));
% plot(S)
% sound(S,Samp)
FT = abs(fft(S));
%% plots
subplot(2,1,1)
plot(S); title(['Signal ' num2str(Freq) ' Hz + Beat'])
subplot(2,1,2)
plot(((0:length(S)-1)/length(S))*Samp,FT);
title('Signal FFT')
xlabel('Frequency')
axis([0 45 0 1])
謝謝很多,我寫了這個小函數,你的意思是這樣嗎?函數Sine = SquareGen(Freq,Duration,Samp,Smooth) if nargin <4,Smooth = 20;結束 Sine = sin((1:持續時間* Samp)* 2 * pi * Freq/Samp); 爲iWave = 1:2:平滑 如果iWave> 1 諧波= SIN((1:持續時間* SAMP)* 2 * PI *(頻率* iWave)/桑普/ iWave; 正弦=正弦+諧波; 端 結束 – Maneaie
是的,它很難閱讀,但看起來是正確的。 – bdecaf