このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ツールボックス関数のコード生成に対する可変サイズの制限
共通の制限事項
以下の共通制限事項は、複数のツールボックス関数に適用されます。ただし、適用されるのはコード生成時のみです。具体的なライブラリ関数にどの制限事項が適用されるかを判断するには、可変サイズ データについて制限のあるツールボックスの関数の表を参照してください。
可変長ベクトルの制限
ライブラリ関数への入力は、可変長または固定サイズのベクトルでなければなりません。可変長のベクトルとは、形状が 1x:n
または :nx1
(1 つの次元が可変サイズで、もう 1 つがサイズ 1 で固定) の可変サイズの配列です。その他の形状は許可されていません。実行時にベクトルになる場合も同様です。
自動次元選択の制限事項
この制限は使用する次元 (動作する対象の次元) を入力として取得する関数に適用されます。MATLAB® およびコード生成で、使用する次元を指定しないと、関数が次元を選択します。MATLAB では、関数は、サイズが 1 ではない最初の次元を選択します。コード生成では、関数は、可変サイズを持つまたは 1 以外の固定サイズを持つ最初の次元を選択します。使用する次元が可変サイズで、実行時に 1 になる場合、使用する次元は MATLAB の使用する次元と異なります。したがって、実行時エラー チェックが有効な場合、エラーが発生する可能性があります。
たとえば、X
は、次元が 1x:3x:5
の可変サイズ行列であるとします。生成されたコードで、sum(X)
は sum(X,2)
のように動作します。MATLAB で、sum(X)
は、size(X,2)
が 1 でない場合、sum(X,2)
のように動作します。MATLAB で、size(X,2)
が 1 の場合は、sum(X)
は sum(X,3)
のように動作します。
この問題を回避するには、使用する次元を定数値で明示的に指定します。例: sum(X,2)
配列からベクトルへの変更に関する制限事項
関数は、可変長ベクトルではない可変サイズの配列が実行時にベクトルの形状をとると、エラーを発行します。この問題を回避するには、入力を可変サイズの配列ではなく可変長ベクトルとして明示的に指定します。
配列からスカラーへの変更に制限事項
関数は、可変サイズの配列が実行時にスカラー値をとると、エラーを発行します。この問題を回避するには、スカラーを固定サイズとして指定します。
可変サイズ データについて制限のあるツールボックスの関数
以下の表に、コード生成に可変サイズ データの制限がある関数を一覧表示します。これらの関数の他の制限や、コード生成でサポートされるすべての関数およびオブジェクトの制限については、C/C++ コードの生成でサポートされている関数およびオブジェクトを参照してください。
関数 | 可変サイズ データの制限 |
---|---|
all |
|
any |
|
cat |
|
conv |
|
cov |
|
cross |
|
deconv |
|
detrend |
|
diag |
|
diff |
|
fft |
|
filter |
|
hist |
|
histc |
|
ifft |
|
ind2sub |
|
interp1 |
|
interpft |
|
ipermute |
|
issorted |
|
magic |
|
max |
|
maxk |
|
mean |
|
median |
|
min |
|
mink |
|
mode |
|
mtimes | 乗算 |
nchoosek |
|
permute |
|
planerot |
|
poly |
|
polyfit |
|
prod |
|
rand |
|
randi |
|
randn |
|
reshape |
|
roots |
|
shiftdim |
|
sort |
|
std |
|
sub2ind |
|
sum |
|
trapz |
|
typecast |
|
var |
|
vecnorm |
|