我有这个功能
Y=fft(y); %fourier transformation
n=size(y,2)/2;
AS=abs(Y)/n; %absolute value
set(figure, 'Position', [0 0 500 300]) %left,bottom,width,height
freq=(0:79)/(2*n*dt);
stem(freq,AS(1:80));
我不希望在横坐标轴周围有圆圈。我只希望它们在图表之上。
答案 0 :(得分:2)
您可以跳过AS
等于0的绘图点。只需将这些值设置为NaN
,然后绘制图表:
Y=fft(y); %fourier transformation
n=size(y,2)/2;
AS=abs(Y)/n; %absolute value
set(figure, 'Position', [0 0 500 300]) %left,bottom,width,height
freq=(0:79)/(2*n*dt);
%// NEW
ASval = AS(1:80);
ASval(ASval == 0) = NaN;
stem(freq,ASval);
由于NaN
的插入,将会发生任何正好为0的点。任何非零的值都将由stem
正常绘制。
通常,由于浮点精度,寻找精确为0的元素可能不是好兆头。因此,最好检查值是否在指定的阈值内,如果是,则将这些值设置为NaN
。由于您的数据严格为正数,因此无需检查从水平轴的负侧接近的值。如您的评论中所述,您使用了0.15
。因此,您只需执行此操作而不是上面的内容:
%// NEW
ASval = AS(1:80);
ASval(ASval < 0.15) = NaN;
stem(freq,ASval);