How to use Improfile in a Function of a Simulink Model on MATLAB R2018B

조회 수: 1 (최근 30일)
Dogukan Engin
Dogukan Engin 2019년 1월 30일
Hello,
I am trying to use 'improfile()' to get the info of related pixels between two different points for a given 612x612 Matrix.(these points are not in a square sub-matrix so 'diag()' function is not usefull. ) It perfectly works in CommandWindow. When I try to run the same operation in a Matlab Function on Simulink, the porgram returns me the diagnostic below.
Function 'improfile' not supported for code generation. Function 'Proximity Sensor Feed-back' (#202.819.901), line 15, column 24: "improfile(Maze_Grayscale_Matrix,Proximity_Vector_Ahead_x,Proximity_Vector_Ahead_" Launch diagnostic report.
The code that I am trying to run:
function [Obstacle_Ahead ,Obstacle_Left ,Obstacle_Right]= Sensor(row,column,Maze_Grayscale_Matrix,x_origin,Ty,Tx,theta)
% Tx=0;
% Ty=0;
% theta=0;
% Maze_Grayscale_Matrix=rand(612);
% row=612;
% column=612;
% x_origin=322;
Initial_Camera_X_Column_Position=round(x_origin+Tx);%322
Initial_Camera_Y_Row_Position=round(row-2-Ty);%610
th = linspace( 0-theta, -pi-theta, 3); % Number and Position of Proximity Sensors on Robot
R = 15; %Proximity Sensor Range
x = max(1,min(column,round(R*cos(th) + Initial_Camera_X_Column_Position))); %Max Possible X Range point of each proximity sensor
y = max(1,min(row,round(R*sin(th) + Initial_Camera_Y_Row_Position)));%Max Possible Y Range point of each proximity sensor
%Proximity Sensor Front Feed-back
Proximity_Vector_Ahead_x=[x(2) Initial_Camera_X_Column_Position];
Proximity_Vector_Ahead_y=[y(2) Initial_Camera_Y_Row_Position];
Proximity_Vector_Ahead=improfile(Maze_Grayscale_Matrix,Proximity_Vector_Ahead_x,Proximity_Vector_Ahead_y);
Obstacle_Ahead =any(Proximity_Vector_Ahead (:)<255);
%Proximity Sensor Right Feed-back
Proximity_Vector_Right_x=[x(1) Initial_Camera_X_Column_Position];
Proximity_Vector_Right_y=[y(1) Initial_Camera_Y_Row_Position];
Proximity_Vector_Right=improfile(Maze_Grayscale_Matrix,Proximity_Vector_Right_x,Proximity_Vector_Right_y);
Obstacle_Right =any(Proximity_Vector_Right (:)<255);
%Proximity Sensor Left Feed-back
Proximity_Vector_Left_x=[x(3) Initial_Camera_X_Column_Position];
Proximity_Vector_Left_y=[y(3) Initial_Camera_Y_Row_Position];
Proximity_Vector_Left=improfile(Maze_Grayscale_Matrix,Proximity_Vector_Left_x,Proximity_Vector_Left_y);
Obstacle_Left =any(Proximity_Vector_Left (:)<255);
Are there any workaround that I can run 'improfile()' in a function in Simulink or any other method that can provide me the elements between two points(non-square) of a matrix?
Thanks in advance,

답변 (0개)

카테고리

Help CenterFile Exchange에서 Quadratic Programming and Cone Programming에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by