Вы можете пропустить черчения точек, где 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);
Что будет происходить в том, что любые точки, которые точно 0 не будет нанесенный из-за вставки NaN
. Любые значения, отличные от нуля, будут отображаться в соответствии с нормами stem
.
В целом, из-за точности с плавающей запятой, поиск элементов, которые точно равны 0, может не служить хорошим предзнаменованием. Поэтому полезно проверить, находятся ли значения в пределах заданного порога, а если они есть, установите эти значения в NaN
. Поскольку ваши данные строго положительны, нет необходимости проверять значения, приближающиеся с отрицательной стороны горизонтальной оси. Как отмечено в ваших комментариях, вы использовали 0.15
. Поэтому вы просто сделаете это вместо того, что у меня было выше:
%// NEW
ASval = AS(1:80);
ASval(ASval < 0.15) = NaN;
stem(freq,ASval);
Непонятно, что вы имеете в виду. Круги расположены в (freq (i), AS (i)), а не вокруг оси абсцисс. Если AS == 0, в этом случае это то, где они должны быть. – AnonSubmitter85
Как создать условия, отображающие значение больше 0 в AS? –