2011-04-07 216 views
1

问候的频率全部增加信号

我回去,并使用resample(从信号处理工具箱)和repmat,但我注意到,在一些的值的行是不一样的样品率,请参阅下面的图片链接。请注意行的顶部图像值为1000,底部图像为rows = 1008。这发生在我更改resample和repmat(freq_new)的值时,但仅限于某些值。我如何正确解决这个问题?我可以在1000之后删除所有东西,但我不确定这是一个错误还是只是resample/repmat的工作方式。 PS:使用MATLAB /八度

http://dl.dropbox.com/u/6576402/questions/rows_different.png

这里的测试代码我用来测试这个

%resample_repmat signal 
clear all, clf 
Fs = 1000; % Sampling rate 
Ts = 1/Fs; %sampling interval 
t=0:Ts:1-Ts; %sampling period 

freq_orig=1; 
y=sin(2*pi*t*freq_orig)'; %gives a short wave 

freq_new=9; 
y2=resample(y,1,freq_new); %resample matrix 
y3=repmat (y2,freq_new,1); %replicate matrix 

[r_orig,c_orig] = size(y) %get orig number of rows and cols 
[r_new,c_new] = size(y3) %get new number of rows and cols 

subplot(2,1,1),plot(y),title('Orginal signal') 
title(['rows=',num2str(r_orig),' cols=',num2str(c_orig)]) 
subplot(2,1,2),plot(y3),title('New signal') 
title(['rows=',num2str(r_new),' cols=',num2str(c_new)]) 
+0

在你前面的问题中留言,你说你想要的所有频率分量的*线*转变,但重采样这样会给你一个*日志*频移,即每个组件的频移量将与每个组件的原始频率成比例。 – 2011-04-07 16:47:33

回答

3

由于原来的信号是1000个样本长,周期重新采样它9次短会给你111.11111 ...在一个循环中的样本。 Matlab将这个数字加起来到112.想一想。如果您的周期长度为111个样本,则您的完整波形长度为999个样本。由于它的长度为112个样本,当您将它们放在一起时,它们会产生1008个样本的信号。没有办法做到1000,因为你正在处理离散时间。代码是正确的,它符合它的要求。实际上没有办法将1000个离散样本中的9个完全相同的任何东西循环。我希望这有帮助。

或者,您可以尝试先重复您的初始波形九次,然后然后重新采样它。你的周期不会相同,但它们很适合1000个样品。

我希望这有助于=)

+1

谢谢你做到了:-) 我刚刚做了你所说的并且改变了/将这些改为了 y2 = repmat(y,freq_new,1); %replicate matrix y3 = resample(y2,1,freq_new); %重采样矩阵 – 2011-04-07 15:42:40