Basic comparison between columns

1 回表示 (過去 30 日間)
012786534
012786534 2017 年 4 月 12 日
コメント済み: 012786534 2017 年 4 月 12 日
Hello all,
Let's say I have a 10 x 10 matrix filled with numbers (10 x 10 double). When the value 999 is found (anywhere) the value in the row on the right-hand side must be 9 or it's an error. I would have thought that:
if Z(:,1:end) == 999 & Z(:,2:end)~=9
disp('error)
return
end
would work but it doesn't.
Any ideas? Thank you
  1 件のコメント
the cyclist
the cyclist 2017 年 4 月 12 日
編集済み: the cyclist 2017 年 4 月 12 日
When you say "right-hand side", do you mean the element just the right of each occurrence of 999 needs to be equal to 9, or that 9 needs to be in the right-most column of the matrix?
How should it be handled if 999 is in the right-most column?

サインインしてコメントする。

採用された回答

the cyclist
the cyclist 2017 年 4 月 12 日
編集済み: the cyclist 2017 年 4 月 12 日
Assuming 9 needs to be just to the right of 999 (and not handling the last column at all), I would probably do this as follows:
conditionFail = Z(:,1:end-1)==999 & not(Z(:,2:end)==9)
if any(conditionFail(:))
disp('error)
return
end
It is possible to put all the code into if statement (without needing to pre-specify the condition), like this ...
if any(any(Z(:,1:end-1)==999 & not(Z(:,2:end)==9)))
disp('error)
return
end
but I think that is more obfuscated.
  1 件のコメント
012786534
012786534 2017 年 4 月 12 日
You are right again!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGet Started with MATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by