我是 matlab 新手,我试图在一个图上绘制一些函数来比较它们的增长率:
n = [1:100];
plot(n, 2.^(2.^n), 'b')
hold
plot(n, 2.^n, 'r');
hold
plot(n, n.^log2(n), 'g')
hold
plot(n, n.^2, 'm')
但我得到的只是最后一个功能。
我是 matlab 新手,我试图在一个图上绘制一些函数来比较它们的增长率:
n = [1:100];
plot(n, 2.^(2.^n), 'b')
hold
plot(n, 2.^n, 'r');
hold
plot(n, n.^log2(n), 'g')
hold
plot(n, n.^2, 'm')
但我得到的只是最后一个功能。
将您的hold
命令更改为hold on
. hold
本身只是切换图形的保持状态,这意味着如果你有:
plot(...) %plot 1
hold
plot(...) %plot 2
hold
plot(...) %plot 3
hold
plot(...) %plot 4
这相当于:
plot(n, 2.^(2.^n), 'b') %plot 1
hold on
plot(n, 2.^n, 'r') %plot 2 --> figure is held
hold off
plot(n, n.^log2(n), 'g') %plot 3 --> figure isn't held
hold on
plot(n, n.^2, 'm') %plot 3 --> figure is held
所以最后,根据您的原始代码,您应该绘制 2 行。由于一个的增长速度比另一个快得多,您可能需要仔细观察才能看到较慢的一个。在那一点上,当您按顺序绘制所有 4 行时,您的第一个图将增长得如此之快,以至于您不会真正看到其他 3 行的大部分内容,就像抬头一样。
此外,您只需要为图形设置 1 个保持命令;您无需在每次绘图后重新应用它。
最好的方法是将所有内容放在一个“绘图”命令中:
n = [1:100];
plot(n, 2.^(2.^n), 'b', n, 2.^n, 'r', n, n.^log2(n), 'g', n, n.^2, 'm');
尝试这个:
n = [1:100];
figure
hold on;
plot(n, 2.^(2.^n), 'b');
plot(n, 2.^n, 'r');
plot(n, n.^log2(n), 'g');
plot(n, n.^2, 'm');
hold off;
当您想要打开多个窗口时,生成一个新的图形窗口很有用。生成新的图形窗口后,您可以根据需要打开保持。