Dynamic Legend (Updates in every recursion)

Semidocumented Solution

Adding lines to a legend in a loop can be accomplished with "dynamic legends", as described on undocumentedmatlab.com.

The idea is to replace the legend command with:

legend('-DynamicLegend');

Then update the plot command with a DisplayName parameter:

plot(d,F,'Linewidth',1.0,'DisplayName',sprintf('pitch,yaw: %d,%d',pitch,yaw));

Then plots that are added to the axes get added to the legend:

enter image description here

If semi-documented features are not your cup of tea, use the DisplayName trick and simply toggle the legend off/on. That is, instead of -DynamicLegend:

legend('off'); legend('show');

A different variation that does not use either DisplayName or -DynamicLegend is to delete and recreate the legend with an array of stored strings.

Official Solution

The official solution recommended by MathWorks it so grab the existing legends` line handles and manually update the legend with those handles. This is pretty painful by comparison to the dynamic legend solution above:

% Get object handles
[LEGH,OBJH,OUTH,OUTM] = legend;

% Add object with new handle and new legend string to legend
legend([OUTH;p1],OUTM{:},sprintf('pitch,yaw: %d,%d',pitch,yaw))