MATLAB Answers

Array indices must be positive integers or logical values.

1 view (last 30 days)
Irfan Tariq
Irfan Tariq on 9 Sep 2019
I am getting above error.
where dataout =1586*128 double


Show 1 older comment
Stephen Cobeldick
Stephen Cobeldick on 9 Sep 2019
This is not valid MATLAB syntax (check the parentheses):
... = data_in_temp(colum-dtn+1):colum)
Bjorn Gustavsson
Bjorn Gustavsson on 9 Sep 2019
should become 0 with the values you've given, matlab uses 1-based indexing, so your indices has to be larger than zero. Possibly your left-hand-side index i is also unallowed, but if you've set that one to a positive integer then it's OK (I've stopped use i and j as indices - sooner or later one tend to use them for their purpose of the imaginary 1i. Instead I use i1, i2 and j1 etc for simple loop-variables, that saves me from occasional but very irritating bugs and errors.)
Fabio Freschi
Fabio Freschi on 9 Sep 2019
true, but the error pointed out by the OP is about wrong indexing

Sign in to comment.

Answers (2)

Stephen Cobeldick
Stephen Cobeldick on 9 Sep 2019
Edited: Stephen Cobeldick on 9 Sep 2019
Check your indexing:
>> colum = 128;
>> dtn = 129;
>> colum-dtn+1
ans = 0
MATLAB indexing start at 1.

TADA on 9 Sep 2019
in Matlab, matrix indices start from one, not zero like other programming languages, but your index starts from zero:
colum-dtn+1 = 0
so what you are actually doing is this:
I guess what you did try to do is more like copy the entire row of data_in_temp into the i'th row of data_out?
if so, try this:
data_out(i,:) = data_in_temp
or if you are trying to copy a subset of that row, make sure the index of data_in_temp is the same size as that of data_out


Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by