returning an object handle from a function
7 ビュー (過去 30 日間)
古いコメントを表示
I am trying to return a function handle from a function. The code is shown below:
function drawHandle = drawXYZ(XYZ,drawHandle);
if isempty(drawHandle)
drawHandle = plot3(XYZ(1,:), XYZ(2,:), XYZ(3,:));
axis([-5,+5,-5,+5,-5,+5])
else
set (drawHandle, 'XData',XYZ(1,:),'YData', XYZ(2,:),'Zdata', XYZ(3,:));
end
I first enter the function with an empty drawHandle (drawXYZ(XYZ,[]). When the line drawHandle = plot3... I get the error that drawHandle is a double and Matlab can's assign a function handle to a double. If I just replace drawHandle with a new variable x the assignment works correctly but still won't allow me to assign drawHandle to x. The function is called from a simulink function block but I don't see why that would make any difference. Any suggestions would be greatly appreciated.
Thanks,
Andy Cruce
0 件のコメント
回答 (3 件)
Walter Roberson
2019 年 8 月 5 日
Graphics objects cannot be Simulink signals, not unless that changed in r2019a.
You can double() a graphics object handle to get the old style numeric handle. You might need to handle() the double to use it for graphics.
0 件のコメント
Adam
2019 年 8 月 5 日
編集済み: Adam
2019 年 8 月 5 日
Try passing in
gobjects(0)
instead.
Yours works fine for me in Matlab, but maybe from simulink it is different and the type of a variable cannot be changed. [] is of type double, so assigning a handle to it requires a type change of the variable, which it may not like.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Graphics Object Programming についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!