MATLAB Coderで「非セル配列オブジェクトからセル要素を参照しています。」とエラーが出る
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
以下のように使う関数 "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" はセル以外を返さないので、非セル配列ではないはずなのですがこのようなエラーになってしまいます。
どなたか解決策をご存じでしたら回答よろしくお願いします。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/292045/image.png)
0 commentaires
Réponses (0)
Voir également
Catégories
En savoir plus sur MATLAB Coder dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!