【发布时间】:2014-06-29 14:06:25
【问题描述】:
我想每次绘制 5 个具有不同 x 值的子图(1 到 5)。而不是重复代码 5 次(每次更改 x)我认为使用 for 循环来绘制每个子图会更优雅。但是,我无法使代码正常工作。
进一步说明,当我手动绘制五个图时,由于某种原因,轴标签仅出现在 Y 轴上。如何让它们出现在所有轴上?
% constants
a=30;
b=0.5;
% parameters
x=1:1:5 ;
e1 = 0:10:10000;
e2 = 0:10:10000;
[e1,e2]=meshgrid(e1,e2);
% plots
t(x)=(a.^(6.*x)/factorial(6.*x))*...
(exp(-b*x.*e2));
u(x)=((a.^(a-(6.*x)))/factorial(a-(6.*x)))*...
exp(-b*(a-(6.*x)).*e1);
p(x)=t(x)./(t(x)+u(x));
%FIGURES:
for i=length(x)
figure
subplot(3,2,i);
mesh(e1,e2,p(i));
title('X=i');
axis([1 10000 1 1000 10^-300 1])
xlabel('e1');
ylabel('e2');
zlabel('p');
end
【问题讨论】:
-
这有点难以回答,因为这里有很多错误。我最初认为这是一个 Matlab 问题,但是 uf t(x)、u(x) 和 p(x) 的定义与 Matlab 没有太大关系,所以我不确定了。如果只是循环绘图是问题,那么您需要做的第一件事就是将“图形”放在 for 循环之外。
标签: matlab for-loop iteration subplot