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.
data_out(i,1:dtn)=data_in_temp(colum-dtn+1):colum)
where dataout =1586*128 double
row=1586;
colum=128
dtn=129;
data_in_temp=1*128
  4 Comments
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
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:
data_out(i,1:129)=data_in_temp(0:128)
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

Community Treasure Hunt

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

Start Hunting!