MATLABのstringにmustBeNonemptyは効かない

これはなに Link to this heading

MATLABのarguments構文で関数の引数を検証するとき、stringの長さを検証するためにmustBeNonemptyを使っても、長さゼロのstring"")はエラーにならないという話。

Link to this heading

たとえば、次のような関数を定義したとする。

function foo(s)
    arguments
        s (1, 1) string {mustBeNonempty}
    end
end

このとき、foo("")を実行すると、エラーにならない。

>> foo("")
ans = ""

解決策 Link to this heading

どうやらMATLABの仕様上、長さゼロのstring"")は空とみなされないらしい。そのため、mustBeNonemptyは効かない。 長さゼロのstring"")を検証するためには、mustBeNonzeroLengthTextを使う必要がある

function foo(s)
    arguments
        s (1, 1) string {mustBeNonzeroLengthText}
    end
end

このようにすると、foo("")を実行するとエラーになる。

>> foo("")
Error using foo (line 4)
Invalid value for argument 's'. Must be a non-zero length text.

ただし、mustBeNonzeroLengthTextはMATLAB R2020bから追加された関数なので、これより古いバージョンのMATLABでは使えない。

まとめ Link to this heading

MATLABのarguments構文で、長さゼロのstring"")を検証するためには、mustBeNonemptyではなく、mustBeNonzeroLengthTextを使う必要がある。

参考文献・URL Link to this heading

No Image
jp.mathworks.com にアクセスできません
jp.mathworks.com
No Image
jp.mathworks.com にアクセスできません
jp.mathworks.com
No Image
jp.mathworks.com にアクセスできません
jp.mathworks.com
Licensed under CC BY-NC-SA 4.0
最終更新 4月 05, 2025
Hugo で構築されています。
テーマ StackJimmy によって設計されています。