主要内容

MATLAB함수를动态仿真模块에서MATLAB函数블록으로구현하기

MATLAB函数블록을사용하면matlab®언어를사용하여Simulink®모델에서사용자지정함수를정의할수있습니다。MATLAB函数블록은仿真软件编码器™및嵌入式编码器®에서c / c++코드생성을지원합니다。

다음경우에이블록을사용합니다。

  • 사용자지정기능을모델링하는기존MATLAB함수가있거나이러한함수를쉽게만들수있습니다。

  • 모델에仿真软件그래픽언어로표현되지않거나표현할수없는사용자지정기능이필요합니다。

  • 仿真软件블록다이어그램을사용하는것보다MATLAB함수를사용하여사용자지정기능을모델링하는것이더쉽게느껴집니다。

  • 모델링하려는사용자지정기능에연속동적상태또는이산동적상태가포함되어있지않습니다。동적상태를모델링하려면S-Function을사용하십시오。MATLAB s函数을만들고구성하기항목을참조하십시오。

MATLAB函数블록으로평균과준편차계산하기

이예제에서는MATLAB函数블록을포함하는모델로시작하여블록의사용자지정방법,값벡터에대한평균및표준편차계산방법등을안내합니다。

모델 열기

모델call_stats_block1에는빈MATLAB函数블록과이예제에필。모델을엽니다。

MATLAB函数블록프로그래밍하기

값으로구성된벡터의평균과준편차를계산하도록블록을프로그래밍합니다。

  1. MATLAB函数블록을더블클릭하여MATLAB函数블록편집기를엽니다。MATLAB函数블록편집기에두개의변수,즉하나의입력및출력,수가있는디폴트함수가,시됩니다。

    这张图片显示了从call_stats_block1模型打开后的MATLAB函数块编辑器。它包含一个默认函数。

  2. 다음과같이함수선언문을편집하여함수입력과출력을정의합니다。

    函数[mean, stdev] = stats(vals)

    이선언문은统计数据라는함수를3개의변수로정의합니다。선언문은입력,수瓦尔斯및두개의출력,수的意思是方差를정의합니다。

  3. 함수선언문이후하나의새줄에다음코드를추가합니다。

    %计算统计平均值和标准val值的%偏差。len =长度(val);意味着= avg (val, len);方差=√总和(vals-avg (vals, len)) ^ 2)) / len);情节(瓦尔斯,”——+”);函数均值= avg(array,size) /size;
  4. 블록을종료합니다。블록은포트이름을업데이트합니다。함수 출력的意思是方差는블록출력포트的意思是方差에대응하고,함수입력瓦尔斯는블록입력포트瓦尔斯에대응합니다。

  5. 다음과같이MATLAB函数블록에대한연결을완료합니다。

    这显示了在前面的图像中建立的块之间的连接信号。

  6. 모델을call_stats_block2로저장합니다。

MATLAB函数블록변수에대한속성검사하기

MATLAB函数블록에서변수에대한속성을검사및관리할수있습니다。创建和定义MATLAB函数块变量항목을참조하십시오。이예제에는입력,수瓦尔斯가유형과크기속성을상속하는지검사합니다。

  1. MATLAB函数블록을더블클릭합니다。

  2. 기호창과속성,스펙터를엽니다。함수탭에서데이터편집을클릭합니다。

    기호창은이름열에변수이름을시합니다。유형열은함수수포트할당과함수선언문에서시될위치를결정합니다。이예제에서瓦尔斯는입력포트에할당됩니다。的意思是方差는출력포트에할당됩니다。어느한변수에대해유형항목을변경하면함수선언문도변경됩니다。

  3. 瓦尔斯에대한속성을검사합니다。기호창에서瓦尔斯의행을클릭합니다。속성,스펙터가업데이트되어瓦尔斯에대한속성을시합니다。범위속성은유형열과일치합니다。

    다음과같은일부속성만상속될수있습니다。크기,단위,실수/복소수여부유형.변수가크기-1,단위继承,실수/복소수여부상속됨,유형상속:Simulink와동일로설정되어있으면,이러한속성을상속함을의미합니다。이예제에서瓦尔斯크기유형에이러한값을사용합니다。

기호창에서나머지MATLAB函数블록변수를선택하여검사하십시오。

기본적으로,새로정의된입력및출력변수는그크기,단위,실수/복소수여부및유형을상속합니다。변수가특정크기,단위또는유형을사용하도록이러한속성을명시적으로지정할수있습니다。예를들어,변수를2×3행렬로지정하려면크기속성에3 [2]을입력합니다。자세한내용은定义和修改变量数据类型指定MATLAB函数块变量的大小항목을참조하십시오。

함수빌드하기

MATLAB函数블록에서코드를입력한뒤오류코드를검사하고함수를빌드할수있습니다。调试MATLAB函数块항목을참조하십시오。

모델을구축할때matlab은컴파일러를사용하여MATLAB函数블록코드를컴파일합니다。Matlab에서지원되는컴파일러가시스템에여러개설치된경우墨西哥人设置명령을사용하여디폴트컴파일러를변경할수있습니다。디폴트컴파일러변경하기항목을참조하십시오。지원되는컴파일러목록을보려면지원및호환되는컴파일러를열고운체제에해당하는탭을클릭한다음仿真软件产品家族표에서对于模型引用,加速器模式,快速加速器模式,和MATLAB函数块열로이동합니다。

仿真软件에서실행을클릭하여모델을시뮬레이션합니다。소프트웨어는모델을구축할때MATLAB函数블록을빌드하며,두개의显示블록에대한함수에서데이터를출력합니다。

코드생성을위해블록준비하기

MATLAB函数블록이포함된모델에서독립실행형c / c++코드를생성하려면仿真软件编码器또는嵌入式编码器를사용합니다。

시뮬레이션및코드생성빌드에지원되는컴파일러선택하기

지원되는컴파일러목록을보려면지원및호환되는컴파일러를열고운체제에해당하는탭을클릭한다음Simulink제품군테이블에서仿真软件编码器열로이동합니다。

MATLAB函数블록에대한코드생성하기

仿真软件编码器또는嵌入式编码器에대한라이선스가있는경우모델로부터코드를생성할수있습니다。코드를생성하려면다음을수행하십시오。

  1. call_stats_block2모델에서MATLAB函数블록을더블클릭합니다。

  2. 仿真软件编码器또는嵌入式编码器앱을엽니다。

  3. C代码탭에서빌드를클릭하여예제모델을컴파일하고빌드합니다。

    가변 스텝솔버와관련된오류가발생하는경우구성파라미터창을연다음왼쪽창에있는솔버를클릭합니다。솔버 선택에서유형고정 스텝으로설정하고코드를다시생성합니다。고정스텝솔버와가변스텝솔버의차이점에대한자세한내용은固定步长vs变步长求解器항목을참조하십시오。

참고 항목

||

관련 항목

Baidu
map