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 日

0 投票

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 件)

カテゴリ

ヘルプ センター および File ExchangeSimscape Electrical についてさらに検索

質問済み:

2017 年 4 月 12 日

コメント済み:

2017 年 4 月 12 日

Community Treasure Hunt

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

Start Hunting!

Translated by