MATLAB Answers

0

Matrix non-exceeding condition

Asked by Lev Mihailov on 6 Aug 2019
Latest activity Commented on by Guillaume
on 6 Aug 2019
Hello! I have a 1x15 matrix, the code is presented
[xdata,x]=min(Data); % Data 45x350 x=[ 16 16 16 31 16 0 16....]
a=[15 15 15 15 15....] % 1x350
for i = 1:length(x)-1
if x(i)+a(i)>a(i)
ax=Data((x(i)-a(i):x(i)),i) ;
ay=Data((x(i):x(i)+a(i),i) ;
A{i}=ax;
B{i}=ay;
else x(i)+a(i)<a(i) ;
ax=0 ;
ay=0 ;
A{i}=ax;
B{i}=ay;
end
end
%%% x(i)+a(i) 31+15=46
It so happened that in one value x (i) + a (i) exceeds the size of the matrix, can anyone tell me the condition how can I get around this?

  4 Comments

Show 1 older comment
Guillaume
on 6 Aug 2019
You will have to explain what your code is meant to do as it doesn't make much sense.
For example:
if x(i)+a(i)>a(i)
is the same as the much simpler:
if x(i) > 0
and since x are matrix indices (returned by min), you know in advance that it's always going to be true. So, what was the point of that?
Also,
else x(i)+a(i)<a(i) ;
is equivalent to:
else
somethingdiscarded = (x(i) + a(i)) < a(i));
which is the same as
else
somethingdiscarded = false;
Again, I'm sure that wasn't the intent.
if x(i)+a(i)>size(Data) % in my case it's 45
ax=0; % it was just written that it was zero
else x(i)+a(i)<a(i)
ax=0;
Something is needed
Guillaume
on 6 Aug 2019
Something is needed
Yes, some much better explanation of what you're trying to do.
Once again,
else x(i)+a(i)<a(i)
ax=0;
is the same as
else
x(i)+a(i)<a(i) %useless statement that will print 0 in the command window
ax=0;
Perhaps, you meant something entirely different:
elseif x(i)+a(i)<a(i)
ax=0;
but until you explain in words what you're trying to do, we can't know for sure.

Sign in to comment.

Products

0 Answers