フィルターのクリア

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 ExchangeParticle & Nuclear Physics についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by