How to create a simple single color visualization in simulink ?

Hi,I'm trying to visualize a single color in a simulink simulation. I would like to send a vector of 3 values [R,G,B] and simply have an that color displayed and updated live on some sort of screen/plot.
I have tried inserting an "matlab function" block and using this function:
function drawColor(RGB)
rectangle('FaceColor',RGB)
This works and displayes the color just like I want it to, but the display is updated very slowly.
Is there a proper way to do this ?

Answers (1)

Hi Michael,
The slow update you're experiencing might be due to the overhead of repeatedly creating graphics objects.
Here is another approach you can try.
  • Create a MATLAB Function block in your Simulink model.
  • Use the following code in the MATLAB Function block:
function drawColor(R, G, B)
coder.extrinsic('set', 'rectangle', 'gcf', 'cla');
persistent rect;
if isempty(rect)
% Create the rectangle once
figure('Name', 'Color Display', 'NumberTitle', 'off');
rect = rectangle('Position', [0, 0, 1, 1], 'FaceColor', [R, G, B]);
axis off; % Turn off the axes for a cleaner look
else
% Update the rectangle's color
set(rect, 'FaceColor', [R, G, B]);
drawnow limitrate; % Optimize rendering speed
end
end

Categories

Find more on Modeling in Help Center and File Exchange

Products

Asked:

on 16 Dec 2014

Edited:

on 12 Dec 2024

Community Treasure Hunt

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

Start Hunting!