why do i get "Array indices must be positive integers or logical values " and how do i solve it ?

11 ビュー (過去 30 日間)
Hasan
Hasan 2023 年 12 月 3 日
編集済み: cr 2024 年 3 月 18 日
theta = [0:23] * pi/12 + 3*pi/8;
x = ones(1, 24) + sin(theta);
X = fft(x) / 24;
X_period = X([-11:12]);
disp('X[k] for one period =');
disp(X_period);
Array indices must be positive integers or logical values.
  1 件のコメント
Dyuman Joshi
Dyuman Joshi 2023 年 12 月 3 日
As the error message states - "Array indices must be positive integers or logical values."
X_period = X([-11:12]);
Here, you have provided negative values and 0 as indices, which is not allowed. That's why you get the error.
To resolve the error, don't provide values that are not allowed.

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

回答 (1 件)

cr
cr 2023 年 12 月 3 日
編集済み: cr 2024 年 3 月 18 日
your X_period should equal to
X(1:24)
If you want to view it shifted you can have
idx = -11:12;
and either use
plot(idx,X)
or if you rather just display the numbers in text,
[idx; X]'
  2 件のコメント
Steven Lord
Steven Lord 2023 年 12 月 3 日
0 is not a valid linear index in MATLAB. Linear indices must be positive integer values, not non-negative.
cr
cr 2024 年 3 月 18 日
編集済み: cr 2024 年 3 月 18 日
Oops. Thanks for pointing out the oversight. Corrected it.

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

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by