How to create plot legend in a loop

조회 수: 8 (최근 30일)
Allan Prince
Allan Prince 2021년 7월 7일
댓글: Mohammad Sami 2021년 7월 8일
I am attempting to add a legend for frequency response plots that are generated in a loop.
I have read through a number of similar answers on this topic but I have not found any that seem to work.
One of the solutions I found mentions indexing a string variable by curly brace but this
just causes an error "Unable to perform assignment because brace indexing is not supported for
variables of this type". Then I went through a blog post that discussed brace indexing but I did not
find a relevant solution there either. I also tried using smooth braces on the 'txt' variable but then
matlab complains that the size of the variable on the left does not match that on the right, even
though they both use the same index.
I would greatly appreciate it if someone could offer a solution to this issue.
Below is my code.
Thank you.
w = 0.01:0.01:20;
zeta = [0.1 0.3 0.707 1.0 3.0 10.0];
w0 = 1;
H = zeros(1, length(w));
figure()
plot(0,0)
hold on
index = 1:1:length(w);
for k=1:length(zeta)
txt{k} = strcat('\zeta', num2str(zeta(k)));
H(index) = abs(1./(1+(2*zeta(k)*1j*w./w0)+(1j*w./w0).^2));
plot(0:0.01:20-0.01, H);
end
hold off
legend(txt)
xlabel('Frequency \omega/\omega_o')
ylabel('Amplitude')
title('Frequency Response |H(j\omega)|')
  댓글 수: 3
Allan Prince
Allan Prince 2021년 7월 8일
편집: Allan Prince 2021년 7월 8일
When I attempted to make the code work as written, I was getting an error that indicated my use of brace indexing was not supported so the code wouldn't run. The following line was giving the error:
txt{k} = strcat('\zeta= ', num2str(zeta(k)));
After I made this post, however, I closed out of matlab to work on another project and when I reopened it, the code started working. I do not understand what caused this issue. I didn't change the code after I restarted matlab so the problem should have still been there. Apparently the issue is fixed now. I wish I could recreate it so I could understand what the issue was for future reference. Thanks for your response. The issue appears to be resolved.
Mohammad Sami
Mohammad Sami 2021년 7월 8일
I think most likely what happened was that txt variable was already created elsewhere and it was not a cell array. If that was the case matlab will give you an error when you try to do txt{k}.

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

답변 (0개)

카테고리

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

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by