функция bwconncomp () не работает в simulink, но работает в matlab

#matlab #simulink

#matlab #simulink

Вопрос:

Я написал фрагмент кода, включающий функцию bwconncomp(), которая отлично работает на моих компьютерах matlab. Однако, когда код был помещен в блок simulink на другом компьютере (с той же версией), я получил сообщение об ошибке

Точечная нотация при вызове возвращаемого значения функции не допускается.1

Когда я пытаюсь добавить дополнительную строку, в которой я вызываю функцию, а затем точечную нотацию, выбирая нужный элемент, я все равно получаю сообщение об ошибке. Знаете ли вы, что может пойти не так?

 function [cleaned_matrix] = pathFindingV2(matrix)

% find height and width of matrix to be cleaned
[HEIGHT,WIDTH] = size(matrix);

% Finds each cluster where a cluster is defined as a blob of trues that
% are connected to eachother
clusters = bwconncomp(matrix, 4).PixelIdxList;

% Choose largest cluster as main path
mainClusterIdxs = [];
maxLength = 0;

for k=1:length(clusters)
    if length(clusters{k}) > maxLength
       maxLength =  length(clusters{k});
       mainClusterIdxs = clusters{k};
    end
end

% Convert index list to a matrix form
length1 = HEIGHT * WIDTH;
cleaned_matrix = zeros(length1, 1);
cleaned_matrix(mainClusterIdxs) = 1;     
cleaned_matrix = reshape(cleaned_matrix, [HEIGHT, WIDTH]); 
 

завершение

Приведенный выше алгоритм (работает в matlab, а не в simulink) принимает матрицу, находит и сохраняет самый большой кластер и устанавливает для всех остальных ячеек значение 0.

Любая помощь будет оценена, я часами бился головой о стену

Комментарии:

1. bwconncomp(matrix, 4).PixelIdxList разрешена только с R2020a или R2020b. Возможно ли, что система, в которой вы запускаете Simulink, имеет более старую версию MATLAB?

2. Спасибо за помощь, однако на обоих компьютерах установлена одна и та же версия, так что это не проблема : (. В итоге я просто написал свою собственную версию функции.