How to add axis labels while using for loops? Keep getting error: Index exceeds the number of array elements (4).
6 次查看(过去 30 天)
显示 更早的评论
I am getting an error trying to add axis titles to my plot. I am using a for loop, but it is only letting me add a legend and a title.
this is the error message:
Index exceeds the number of array elements (4). Error in Homework_1 (line 12) xlabel('real')
z = [2 + 5i; 1.41+1.41i; 5.87+9.15i; -3.07+6.72i; 0.997+0.071i; 3*exp(1.23i); 2*exp((pi/2)*1i); 13*exp(1i); 3; 2+11i; 4+2i; (1/5)+(4/5)*1i; ] ;
s = ['o'; '*'; 's'; 'p'; '+'; '>'; '<'; 'x'; 'd'; '.'; 'h'; '^';];
for index = 1:12
plot (z(index), s(index), 'MarkerSize', 10 );
hold on;
end
hold off;
title('complex numbers');
legend('2 + 5i', '1.41+1.41i', '5.87+9.15i', '-3.07+6.72i', '0.997+0.071i', '3*exp(1.23i)', '2*exp((pi/2)*1i)', '13*exp(1i)', '3', '2+11i', '4+2i', '(1/5)+(4/5)*1i');
xlabel('real');
ylabel('imaginary');
2 个评论
woahs
2020-1-19
Not sure what the issue is here. The provided code executes without error. Your axis properties are set outside the loop so the fact that you used a loop to create them shouldn't matter.
采纳的回答
Adam Danz
2020-1-19
编辑:Adam Danz
2020-1-19
Updated answer
It appears that you may have a variable named xlabel that is interfering with the xlabel() function. To confirm this, run the line below.
which xlabel
If my hunch is correct, it should output: xlabel is a variable.
-----------------------------------------------------------------------
Old answer (still relevant)
As Kevin Chen mentioned, the code you shared does not result in any errors.
Here are 3 improvements to make.
- Define number of iterations based on number of values available
- Use DisplayName to label the legend
z = [2 + 5i; 1.41+1.41i; 5.87+9.15i; -3.07+6.72i; 0.997+0.071i; 3*exp(1.23i); 2*exp((pi/2)*1i); 13*exp(1i); 3; 2+11i; 4+2i; (1/5)+(4/5)*1i; ] ;
s = ['o'; '*'; 's'; 'p'; '+'; '>'; '<'; 'x'; 'd'; '.'; 'h'; '^';];
% Define legend strings
legStr = {'2 + 5i', '1.41+1.41i', '5.87+9.15i', '-3.07+6.72i', '0.997+0.071i', '3*exp(1.23i)', '2*exp((pi/2)*1i)', '13*exp(1i)', '3', '2+11i', '4+2i', '(1/5)+(4/5)*1i'};
for index = 1:numel(z) % use z or s
plot (z(index), s(index), 'MarkerSize', 10, 'DisplayName',legStr{index}); % use DisplayName
hold on;
end
hold off;
title('complex numbers');
legend(); % just call legend()
xlabel('real');
ylabel('imaginary');
You could also move "hold on" outside of the loop.
8 个评论
Adam Danz
2020-1-19
编辑:Adam Danz
2020-1-19
One way to avoid these types of errors is to use functions rather than scripts. Functions have their own workspaces so if you accidentally created a variable named xlabel from the command window, it wouldn't exist within the function workspace the next time the function was run.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Subplots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!