MATLAB Coderで「非セル配列オブジェクトからセル要素を参照しています。」とエラーが出る
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
以下のように使う関数 "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 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu MATLAB Coder finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!