필터 지우기
필터 지우기

problem of getting data from Simulink to Workspace with Matlab Fcn block

조회 수: 2 (최근 30일)
Hello,
I'm trying to convert the hexadecimal numbers to ascii strings and pass it from Simulink to Workspace. To do that I used a Matlab Fcn block : function y = fcn(u) %#eml eml.extrinsic('assignin'); eml.extrinsic('strcat'); eml.extrinsic('plot');
Temp5 = ConvertToAscii(u(1),u(2),u(3),u(4));
assignin('base','Str_Digits',Temp5);
y = u(1);
So, when I click on the button 'Start simulation' in Simulink, I can see the output value change every time steps. However, when I launch a m file, I can only see the output after that m file execution finished. How to resolve this problem?
Thank you,
  댓글 수: 3
Kaustubha Govind
Kaustubha Govind 2011년 7월 20일
Do you mean that at the end of simulation, only the last value of 'Temp5' is available, and you really want it to be an array of strings?
Sonny
Sonny 2011년 7월 21일
Indeed, I would like to visualize the evolution of the variable during the simulation. But here it's not possible, I only get the result at the end of the execution of m.file. However, if I don't stop the simulation after that, I can see the value change. So only during the execution of the script that I can't get the values

댓글을 달려면 로그인하십시오.

채택된 답변

Fangjun Jiang
Fangjun Jiang 2011년 7월 21일
Your MATLAB Fcn block is also executed at every simulation step. Your statement assignin('base','Str_Digits',Temp5); over-write the variable "Str_Digits" in base workspace. Are you saying that you only saw one value of "Str_Digits"? Try to add the following line after that statement. Maybe you will see the value got updated continuously in the command window.
evalin('base','Str_Digits')
  댓글 수: 1
Sonny
Sonny 2011년 7월 21일
Indeed when I put it in the Fcn block, I get the value updated continuously in the command window. Of course in the command windows it could be annoying when executing a script, but it's already better than having nothing at all. Thank you

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Rick Rosson
Rick Rosson 2011년 7월 21일
Simulink does not support character or string data types. I would recommend that you do these calculations in MATLAB instead. If the data is being generated by a Simulink model, then you can simply pass the data from Simulink to the MATLAB Workspace using the "To Workspace" block, and then process the data using the "StopFcn" Callback Function.
There is no real advantage in trying to do this task with the MATLAB Function Block, and as you have discovered, there are many disadvantages in this case.
HTH.
  댓글 수: 1
Maddila
Maddila 2012년 12월 20일
if u use "to workspace" block also,,u wont get continuos updated values back to the base workspace

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Sources에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by