Clear Filters
Clear Filters

Last color on legend does not match last color on stem plot, after manually setting color in for loops.

25 views (last 30 days)
This code generates stem plots for functions of number sequences. The last two plots require for loops to shift the sequences. The plot colors are hard coded in each loop to keep the same color. This works for the plots, but the legend shows the last two funcitons as both green when the last one should be purple. What might be causing this and is there a work-around?
x = [0,1,2,3,4,-4,-3,-2,-1,0];
y = [0,0,-1,0,1,0,-1,0,1,0,0];
longest_sequence = max(numel(x),numel(y));
figure(1)
hold on
stem(x,'LineWidth',2.0)
stem(5*x,'LineWidth',2.0)
stem(y,'LineWidth',2.0)
for n = 2:9
stem(n-1,y(n+1),'LineWidth',2.0, 'Color','#77AC30')
end
for n = 2:9
stem(n-1,-2*x(n-1)+3*y(n+2),'LineWidth',2.0,'Color','#7E2F8E')
end
hold off
title('Problem 1')
xlim([0 longest_sequence+1])
xticks(0:1:11)
yticks(-20:1:20)
xlabel('Time')
ylabel('Amplitude')
set(gca,'FontWeight','bold')
legend('x','5x','y','y(n+1)','-2x(n-1)+3y(n+2)')

Accepted Answer

Walter Roberson
Walter Roberson on 25 Jun 2024 at 18:15
for n = 2:9
stem(n-1,y(n+1),'LineWidth',2.0, 'Color','#77AC30')
end
That generates multiple plot objects, each with green color.
legend('x','5x','y','y(n+1)','-2x(n-1)+3y(n+2)')
That assigns legends to consecutive plot objects.
Your mistake was in thinking that the stem() within the for loop would all get grouped into the same legend.
  2 Comments
Walter Roberson
Walter Roberson on 25 Jun 2024 at 18:16
x = [0,1,2,3,4,-4,-3,-2,-1,0];
y = [0,0,-1,0,1,0,-1,0,1,0,0];
longest_sequence = max(numel(x),numel(y));
figure(1)
hold on
H1 = stem(x,'LineWidth',2.0);
H2 = stem(5*x,'LineWidth',2.0);
H3 = stem(y,'LineWidth',2.0);
for n = 2:9
H4 = stem(n-1,y(n+1),'LineWidth',2.0, 'Color','#77AC30');
end
for n = 2:9
H5 = stem(n-1,-2*x(n-1)+3*y(n+2),'LineWidth',2.0,'Color','#7E2F8E');
end
hold off
title('Problem 1')
xlim([0 longest_sequence+1])
xticks(0:1:11)
yticks(-20:1:20)
xlabel('Time')
ylabel('Amplitude')
set(gca,'FontWeight','bold')
legend([H1, H2, H3, H4, H5], {'x','5x','y','y(n+1)','-2x(n-1)+3y(n+2)'})

Sign in to comment.

More Answers (0)

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!