why doubling is done from 2 to end-1 only in plotting single sided spectrum: P1(2:end-1) = 2*P1(2:end-1); ?

4 ビュー (過去 30 日間)
The full code is:
Y = fft(X);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;
plot(f,P1);
title('Single-Sided Amplitude Spectrum of X(t)');
  8 件のコメント
Abhishek Maurya
Abhishek Maurya 2018 年 2 月 28 日
Thankyou to Adam,John D'Errico and everybody else who showed their interest in answering questions.
Rena Berman
Rena Berman 2018 年 3 月 19 日
(Answers Dev) Restored edit

サインインしてコメントする。

採用された回答

John D'Errico
John D'Errico 2018 年 2 月 27 日
編集済み: John D'Errico 2018 年 2 月 27 日
end (when used as a subscript) is a shorthand to indicate the last position for the corresponding index.
So V(end) refers to the last element of a vector V. V(2:end) takes all elements but the first in a vector. And V(2:end-1) is the 2nd through penultimate element. This also applies to array indexing.
Therefore
P1(2:end-1) = 2*P1(2:end-1);
merely doubles the indicated elements in the vector P1.
I suppose use of the end keyword might have been confusing to some. They might have created some new keyword name for use in subscripting. They might, for example, have given us a lastIndex keyword, which might be clearer to some. But that in turn is longer to write, and establishes an entirely new keyword, possibly disabling some older code. Since end already existed as a keyword, but one that had no valid context in a subscript, it was deemed safe to use for indexing.
  1 件のコメント
P Sun
P Sun 2021 年 6 月 10 日
Hi John, thank you for your answer.
Do you have any idea about why don't use the first and last values?
Many thanks.

サインインしてコメントする。

その他の回答 (1 件)

KL
KL 2018 年 2 月 27 日
編集済み: KL 2018 年 2 月 27 日
You probably need to read about matrix indexing.
simple example,
>> A = 1:5
A =
1 2 3 4 5
>> A(end)
ans =
5
>> A(end-1)
ans =
4

カテゴリ

Help Center および File ExchangeSpectral Measurements についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by