MATLAB Coderで「非セル​配列オブジェクトから​セル要素を参照してい​ます。」とエラーが出​る

5 ビュー (過去 30 日間)
Haruki SHIMOTORI
Haruki SHIMOTORI 2020 年 5 月 11 日
編集済み: Haruki SHIMOTORI 2020 年 5 月 11 日
以下のように使う関数 "GetFlag" をMATLAB CoderでC言語に変換しようとしました。
%main.m
SampleNum = 1000;
theta = linspace(0, 1.1 * pi, SampleNum);
funcX = @(th) sin(3 * th);
funcY = @(th) sin(2 * th);
Position = zeros(SampleNum, 2);
for i = 1 : SampleNum
Position(i, 1) = funcX(theta(i));
Position(i, 2) = funcY(theta(i));
end
figure(1)
scatter(Position(:, 1), Position(:, 2)) % 位置データ
SearchRange = 0.1;
Flag = GetFlag(Position, SearchRange, SampleNum); %交差点を見つける
figure(2)
plot(theta, Flag) % 交差している箇所の確認
%GetFlag.m
function flag = GetFlag(position, searchRange, num)
flag = zeros(1, num);
storePosition = NaN(num, 2);
for i = 1 : num
storePosition(i, :) = position(i, :);
Idx = rangesearch(storePosition, storePosition(i, :), searchRange); % 現在の点から周囲の点を探索
Outlier = isoutlier(Idx{1, 1}); % 外れ値を検知する
Sum = sum(Outlier, 'all'); %すべて足す
flag(i) = ge(Sum, 1); % 1以上だったら交差していると判定
end
end
しかし、MATLAB Coderの実行時の問題の確認セクションで、以下のようなエラーが発生してしまいます。
エラー箇所の変数 "Idx" に値を渡している関数 "rangesearch" はセル以外を返さないので、非セル配列ではないはずなのですがこのようなエラーになってしまいます。
どなたか解決策をご存じでしたら回答よろしくお願いします。

回答 (0 件)

カテゴリ

Help Center および File ExchangeMATLAB Coder についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!