Array indices must be positive integers or logical values

조회 수: 4 (최근 30일)
Brooks Corbett
Brooks Corbett 2019년 11월 17일
편집: Star Strider 2019년 11월 17일
H = 0;
M = length(h);
for k=0:M-1
H = H + (h(k) * exp(-1i*2*pi*fd));
end
%fd and h come from a function call

채택된 답변

Star Strider
Star Strider 2019년 11월 17일
편집: Star Strider 2019년 11월 17일
The problem:
for k=0:M-1
The solution:
for k=1:M
In MATLAB, subscript indices begin at 1, not 0, and are defined as integers greater than 0.
It is more efficient to do this without the loop:
H = cumsum(h* exp(-1i*2*pi*fd));
or simply:
H = sum(h* exp(-1i*2*pi*fd));

추가 답변 (1개)

Fabio Freschi
Fabio Freschi 2019년 11월 17일
Your index k starts from 0 and you are indexing h with k, so you are asking at the first iteration h(0). Matlab has 1-indexing so you get the error. I guess your for loop should be
for k = 1:M
...
end

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by