【发布时间】:2011-05-31 09:07:16
【问题描述】:
这一切都在 MATLAB 2010 中完成
我的目标是显示以下结果:欠采样、奈奎斯特率/过采样
首先,我需要对 .wav 文件进行下采样以获得不完整/或公正的数据流,然后我可以重新构建。
这是我要做什么的流程图所以流程是模拟信号 -> 采样模拟滤波器 -> ADC -> 重采样 -> 重采样 -> DAC -> 重建模拟滤波器
需要达到的目标:
F= 频率
F(Hz=1/s) E.x. 100Hz = 1000(循环/秒) F(s)= 1/(2f)
示例问题:1000 赫兹 = 最高 频率 1/2(1000hz) = 1/2000 = 5x10(-3) sec/cyc 或采样率 5毫秒
这是我第一个使用 matlab 进行信号处理的项目。
到目前为止我有什么。
% Fs = frequency sampled (44100hz or the sampling frequency of a cd)
[test,fs]=wavread('test.wav'); % loads the .wav file
left=test(:,1);
% Plot of the .wav signal time vs. strength
time=(1/44100)*length(left);
t=linspace(0,time,length(left));
plot(t,left)
xlabel('time (sec)');
ylabel('relative signal strength')
**%this is were i would need to sample it at the different frequecys (both above and below and at) nyquist frequency.*I think.***
soundsc(left,fs) % shows the resaultant audio file , which is the same as original ( only at or above nyquist frequency however)
谁能告诉我如何让它变得更好,以及如何在不同的频率下进行采样?
这是.wav 文件http://www.4shared.com/audio/11xvNmkd/piano.html
编辑:
%Play decimated file ( soundsc(y,fs) )
%Play Original file ( soundsc(play,fs ) )
%Play reconstucted File ( soundsc(final,fs) )
[piano,fs]=wavread('piano.wav'); % loads piano
play=piano(:,1); % Renames the file as "play"
t = linspace(0,time,length(play)); % Time vector
x = play;
y = decimate(x,25);
stem(x(1:30)), axis([0 30 -2 2]) % Original signal
title('Original Signal')
figure
stem(y(1:30)) % Decimated signal
title('Decimated Signal')
%changes the sampling rate
fs1 = fs/2;
fs2 = fs/3;
fs3 = fs/4;
fs4 = fs*2;
fs5 = fs*3;
fs6 = fs*4;
wavwrite(y,fs/25,'PianoDecimation');
%------------------------------------------------------------------
%Downsampled version of piano is now upsampled to the original
[PianoDecimation,fs]=wavread('PianoDecimation.wav'); % loads piano
play2=PianoDecimation(:,1); % Renames the file as "play
%upsampling
UpSampleRatio = 2; % 2*fs = nyquist rate sampling
play2Up=zeros(length(PianoDecimation)*UpSampleRatio, 1);
play2Up(1:UpSampleRatio:end) = play2; % fill in every N'th sample
%low pass filter
ResampFilt = firpm(44, [0 0.39625 0.60938 1], [1 1 0 0]);
fsUp = (fs*UpSampleRatio)*1;
wavwrite(play2Up,fsUp,'PianoUpsampled');
%Plot2
%data vs time plot
time=(1/44100)*length(play2);
t=linspace(0,time,length(play2));
stem(t,play2)
title('Upsampled graph of piano')
xlabel('time(sec)');
ylabel('relative signal strength')
[PianoUpsampled,fs]=wavread('PianoUpsampled.wav'); % loads piano
final=PianoUpsampled(:,1); % Renames the file as "play"
%-------------------------------------------------------------
%resampleing
[piano,fs]=wavread('piano.wav'); % loads piano
x=piano(:,1); % Renames the file as "play"
m = resample(x,3,2);
【问题讨论】:
-
你是什么意思,从我之前问过的关于使用 msp430 微控制器的奈奎斯特采样的问题来看,这与此无关。
-
这意味着您单击绿色复选标记回答您之前的问题之一,就像 in this question 所做的那样。它奖励作者加分,并允许未来的用户和搜索者查看哪个答案最有帮助。
-
对我关于 msp430 板的问题最有帮助是的。 . .
标签: matlab audio signal-processing resampling