MATLAB > NxM array > 比較 > y1とy2が異なるかを確認する > unique(y1 == y2) にて 0がある(異なる) > isequal() , ifでtrueが返される条件, all()


動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)

関連

MATLAB > NxM array > 比較 > y1 == y2 | 行列なのかarrayなのか

処理案

>> y1 = [3 1 4; 1 5 9];
>> y2 = [3 1 4; 2 6 9];
>> y1 == y2

ans =

  2×3  logical 配列

   1   1   1
   0   0   1

「変数1==変数2」の比較にて0が表示されると、「異なる部分がある」と分かる。
しかしながら、NxMの数が多い場合、0があるかどうかを調べるのは大変である。

以下とする。

>> unique(y1==y2)

ans =

  2×1  logical 配列

   0
   1

0がある場合、「異なる部分がある」と分かる。

sphereptsコード使用

>> [x0, tri0] = getIcosNodes(4,0);
>> [x1, tri1] = getIcosNodes_swap(4,0);
>> unique(x0 == x1)

ans =

  logical

   1

getIcosNodes_swap()はこちらで用意したコード。

sphereptsというコードにおいて、freeBoundary()の結果に対してスワップした場合でも、最終的に得るものに相違はないことが確認できた。
freeBoundary()のNumpy実装において、三角形のインデックスセットの順番を厳密に再現しなくても良さそう。
https://qiita.com/7of9/items/ff6ca65cdf9973fb6a16

教えていただいた事項

(追記 2017/11/19)

@ozwk さんのコメントにてisequal()を教えていただきました。

@ozw さんのコメントにおいてifでtrueが返される条件を教えていただきました。

@ozwk さんのコメントにおいてall()の使い方も教えていただきました。

情報感謝です。