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

4 views (last 30 days)
Haruki SHIMOTORI
Haruki SHIMOTORI on 11 May 2020
Edited: Haruki SHIMOTORI on 11 May 2020
以下のように使う関数 "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" はセル以外を返さないので、非セル配列ではないはずなのですがこのようなエラーになってしまいます。
どなたか解決策をご存じでしたら回答よろしくお願いします。

Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!