MATLAB の nnz()関数

Ammar Ali 2022年6月13日
MATLAB の nnz()関数

このチュートリアルでは、MATLAB の nnz() 関数を使用して、ベクトルまたは行列に存在する非ゼロ要素の数を見つける方法について説明します。

MATLAB で nnz() 関数を使用する

MATLAB の nnz() 関数は、ベクトルまたはマトリックスに存在する非ゼロ要素を見つけるために使用されます。以下は、nnz() 関数の基本的な構文です。

構文:

num = nnz(m)

構文は、マトリックスまたはベクトル m 内に格納されている非ゼロ要素の総数を返し、それを変数 num に格納します。nnz() 関数の入力は、行列またはベクトルである必要があります。

たとえば、ベクトルを作成し、nnz() 関数を使用して存在する非ゼロ要素の数を見つけましょう。

コード:

m = [0 1 0 5]
num = nnz(m)

出力:

m =

   0   1   0   5

num = 2

上記のコードでは 4つの要素を含むベクトルを使用しましたが、これらの要素のうち 2つはゼロです。nnz() 関数が 2 を返したことがわかります。これは、指定された行列またはベクトルに 2つの非ゼロ要素が存在することを意味します。

nnz() 関数内で条件を定義することもできます。1 より大きい要素の数のみを検索する場合は、より大きい記号を使用して、nnz() 関数内の条件を定義できます。

たとえば、上記のマトリックスに存在する 1 より大きい要素の数を見つけましょう。

コード:

m = [0 1 0 5]
num = nnz(m>1)

出力:

m =

   0   1   0   5

num = 1

上記の例では、nnz() 関数内に 1 より大きい要素の数を返す条件を定義しました。出力に示されているように、1 より大きい要素の数は 1 です。

条件を定義しない場合、nnz() 関数は 0 より大きい要素の数を返しますが、その条件を変更することができます。nnz() 関数を設定して、-5 などの負の数より大きい要素の数を返すこともできます。この場合、関数は、ゼロを含む-5 より大きいすべての要素をカウントします。

たとえば、マトリックスに存在する負の値より大きい要素の数を数えましょう。

コード:

m = [-5 -1 1 0 5]
num = nnz(m>-5)

出力:

m =

  -5  -1   1   0   5

num = 4

ご覧のとおり、上記のマトリックスでは 4つの数値が -5 より大きく、nnz() 関数も 4つを出力として返しました。 > より大きい、< より小さい、= に等しい、>= 以上、<= 以下、論理 AND &、および論理を使用できます。または| nnz() 関数内で条件を定義する演算子。

論理積 $ および論理和 |演算子は、複数の条件を定義する場合に役立ちます。AND 演算子の場合、要素はすべての条件を満たす場合にカウントされ、OR 演算子の場合、要素は 1つでも満たされる場合にカウントされます。

特定の値より大きい要素と特定の値より小さい要素の数をカウントする場合は、AND 演算子を使用して 2つの条件を定義できます。特定の値より大きい要素と別の値より大きい要素の数をカウントする場合は、OR 演算子を使用できます。

たとえば、nnz() 関数内の複数の条件を使用して、マトリックスに存在する要素の数を数えましょう。

コード:

m = [15 10 1 0 5]
num = nnz(m>1 & m<15)
num_2 = nnz(m>5 | m<1)

出力:

m =

   15   10    1    0    5

num = 2
num_2 = 3

AND 演算子を使用して、1 より大きく 15 より小さい要素の数を見つけました。また、nnz() 関数によって返される要素は 2つしかないことがわかります。また、OR 演算子を使用して、5 より大きいまたは 1 より小さい要素の数を見つけました。また、2つの要素が 5 より大きく、1つの要素が 1 より小さいことがわかります。

要素の総数は 3 になり、これは nnz() 関数によって返されます。nnz() 関数内で AND 演算子と OR 演算子の両方を使用して、条件を定義し、任意の数の条件を定義することもできます。

nnz() 関数の詳細については、このドキュメントを確認してください。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - MATLAB Matrix