2014-11-28 1 views
-1

Simulink에서 matlab 함수 블록을 사용할 때. 나는 세포 유형을 포함하는 또 다른 matlab 함수를 사용한다. 그러나 simulink는 셀 때문에 오류 메시지를보고했습니다. 이것을 피하는 방법? 나는 모든 기능들이 셀을 가지고 있기 때문에 그 기능을 수정하고 싶지는 않다. 그것들을 모두 수정하기위한 많은 노력이 필요하다. 오류 메시지 : 시뮬레이션 (28) 지우기 저장 오후 11시 26분 28초 2014년 11월 27일 경과 : 7 초코드 생성을 위해 cell() 생성자가 지원되지 않습니다.

세포() 생성자는 코드 생성을 지원하지 않습니다

기능 'RealCo.m'(# 56.102.111), 5 행 4 열 : "cell (9,1)" 진단 보고서를 실행하십시오. 구성 요소 : MATLAB 함수 | 카테고리 : 코더 오류

내 기능 :

function Co=RealCo(q) 
l=60; 
%%%Coordinate Calculation 
%Guess value adopt the unique position below 
Co=cell(9,1); 
for i=1 
    Co{i}=[0;0;0]; 
end 

Co{1}=[sqrt(3)*l/4;0;0]; 
Co{2}(1)=-sqrt(3)*l/4; 
Co{2}(2)=l/2; 
Co{2}(3)=0; 
Co{3}(1)=Co{2}(1); 
Co{3}(2)=-l/2; 
Co{3}(3)=0; 

Co{4}=[sqrt(3)*l/4;-l/2;sqrt(3)*l/2]; 
Co{5}=Co{4}; 
Co{5}(2)=-Co{5}(2); 
Co{6}=Co{4}; 
Co{6}(1)=-Co{6}(1); 
Co{6}(2)=0; 

for i=7:9 
    Co{i}=Co{i-6}; 
    Co{i}(3)=sqrt(3)*l; 
end 

guess=zeros(27,1); 
for i=1:3:27 
    %When i=1,j=1 i=4,j=2 i=7,j=3 ... 
    j=(i-rem(i,3))/3+1; 
    guess(i)=Co{j}(1); 
    guess(i+1)=Co{j}(2); 
    guess(i+2)=Co{j}(3); 
end 

%Use fsolve to solve the system based on current value of q 
[email protected](R)Coor(R,q); 
[result, fval, exit, output]=fsolve(fC,guess); 
% result 
% fval 
% eqns(guess) 
% output 
for i=1:3:27 
    %When i=1,j=1 i=4,j=2 i=7,j=3 ... 
    j=(i-rem(i,3))/3+1; 
    Co{j}=[result(i);result(i+1);result(i+2)]; 
end 

답변

1

다양한 MATLAB Code Generation Manual 읽어 보시기 바랍니다. 그곳에서 일반 제한 섹션에서 명확

당신은 당신의 코드에서 셀 어레이를 사용할 수 없다는.

이에 대한 해결책은 MATLAB Central에 나와 있습니다. 예를 들어 셀 어레이를 다음과 같이 바꿔야합니다. 구조체. 코드에서 볼 수 있듯이 변수 Co의 각 항목은 1x3 또는 3x1 배열입니다. 따라서 Co을 9x3 매트릭스로 쉽게 대체 할 수 있어야합니다.

물론 꽤 많은 작업이지만, 이것들은 MATLAB 코더의 한계에 불과합니다.

관련 문제