Subscript indices must either be real positive integers or logicals only in the loop

1 次查看(过去 30 天)
Dear all,
I'm stuck with the error "Subscript indices must either be real positive integers or logicals." in the code below. When I delete the loops and do manually for different values of i and ii, no error appears. Could you please help to understand what is wrong?
[~, m] = ismember(date30(:,1:5),date_sep2(:,1:5),'rows');
date30_all=NaN(length(date30),size((data),2)+6);
date30_all(:,1:5)=date30(:,1:5);
for i=2:size((date30),1);
date30_all(i,6:end)=out(m(i,1),6:end);
for ii=6:size((date_sep2),2);
if isnan(date30_all(i,ii));
date30_all(i,ii)=out(m(i-1,1),ii);
else
end
end
end

采纳的回答

Guillaume
Guillaume 2016-5-10
When reporting an error always report the whole error message including the line at which it occurs.
A guess is that one of your date30 is not member of date_sep2 and therefore one of the m element is 0. As you're using m(i, 1) as an index into out this causes problem.
If that is the case, the proper to fix this depends on what you want to do when a date30 is not found.
As an aside, you're taking a risk using length in your code. length is going to return the number of columns if there are less rows than columns. This would be a lot more robust since it will work regardless of the numbers of rows in date30:
date30_all = NaN(size(date30, 1), size(data, 2)+6); %and no need for extra brackets around date
I would recommend never using length. Use size with an explicit dimension for matrices, and numel for vectors.
As an other aside, since m is a vector, I would write m(i) instead of m(i, 1). That way it does not matter if m is a row or column vector.

更多回答(1 个)

Walter Roberson
Walter Roberson 2016-5-10
m has entries for all of the date30(:,1:5) values, not just the ones that match. m will be 0 for the ones that do not match. You are not testing your m before using them.
The first output of ismember would be a logical vector indicating whether the m was valid or not.

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by