在matlab上更改水平值轴

时间:2015-03-03 12:03:55

标签: matlab fft frequency-analysis

我是Matlab的新手,我想用这样的词来绘制函数:

% Taller de analisis de frecuencias %
n = 0:3999;
Fs = 8000;
x1 = sin(2*pi*1000/Fs*n); 
subplot(3,1,1);
stem(x1(1:9));
disp('FFT con N=4096');
nfft = 4096;
y = fft(x1,nfft);
subplot(3,1,2);
stem(y);
subplot(3,1,3);
stem(fftshift(y));

我正在使用它作为研究的一部分,学习分析从模拟到数字信号转换的频率。问题是我想在第二个词干中标记水平轴,其值为0到2 * pi(这是表示信号的正确值),然后我必须剪切表示的第二部分并将其移动到前面(结果将是第3个杆(实际上这个是使用fftshift功能获得的,这与我在前面切割和粘贴相同)

我无法用0:2 * pi的值标记水平轴,所以我要求帮助,因为我知道这可以做到..

非常感谢

1 个答案:

答案 0 :(得分:0)

Deve在评论中的建议解决了您所说的问题:使用stem(X,Y),其中X是与Y相同长度的向量,具有所需的端点。使用linspace命令创建此类向量。

您可能还想使用axis tight,以便不留下看起来像零频率区域的空白区域。以下是我在调整后得到的结果:

myplot

这是代码:

n = 0:3999;
Fs = 8000;
x1 = sin(2*pi*1000/Fs*n); 
subplot(3,1,1);
stem(x1(1:9));
disp('FFT con N=4096');
nfft = 4096;
y = fft(x1,nfft);
subplot(3,1,2);
stem( linspace(0,2*pi, length(y)), y);
axis tight
subplot(3,1,3);
stem( linspace(-pi,pi, length(y)), fftshift(y));
axis tight