MATLAB Coderで「非セル配列オブジェクトからセル要素を参照しています。」とエラーが出る
4 views (last 30 days)
Show older comments
以下のように使う関数 "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 Comments
Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!