【问题标题】:Multiple graphs into one, with value labels多图合二为一,带有值标签
【发布时间】:2016-11-08 18:41:49
【问题描述】:

我已经绘制将图表分成 1。我想通过反复试验最大化 z=abs(1+s+(alpha_2)*s.^2+(alpha_1)*(alpha_2)*s.^3),因此其他图表可以尽可能大地放入其中。所以我想做两个 for 循环来改变 alpha_1 和 alpha_2 的值。例如

for alpha_1=1:0.5:2
   for alpha_2=1:0.5:2 

    z=abs(1+s+(alpha_2)*s.^2+(alpha_1)*(alpha_2)*s.^3);
    [C,h] = contour(x,y,z,[1 1]);

   end do
end do 

所以该图将绘制 9 个不同的图。是否可以将这 9 个图放入图中并说出每个图的 alpha_1 和 alpha_2 的值是多少?

原始程序:

clear all
close all

alpha_1=0;
alpha_2=0;


theta = 2*pi 
clear t w;
t = 0: theta/100: theta;


w=-1/6*(3-4*cos(t)+cos(2*t)+1i*(8*sin(t)-sin(2*t)));

figure(1)


plot(w,'r')
hold on
%axis( [-10,10, -10,10] )
axis square; grid on

%Contour plot

[x,y] = meshgrid(-2.5 : 0.02:2.5, -2.5 : 0.02: 2.5);
s = x + 1i*y;

z=abs(1+s+(alpha_2)*s.^2+(alpha_1)*(alpha_2)*s.^3);


[C,h] = contour(x,y,z,[1 1]);
clabel(C,h)

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    只需使用subplot。也许是这样的:

    figure;
    alpha_1=1:0.5:2;
    alpha_2=1:0.5:2;
    for id1=1:length(alpha_1)
        for id2=1:length(alpha_2)
    
            z=abs(1+s+(alpha_2(id2))*s.^2+(alpha_1(id1))*(alpha_2(id2))*s.^3);
            subplot(length(alpha_1),length(alpha_2),id2+(id1-1)*length(alpha_2));
            contour(x,y,z,[1 1]);
            title(['\alpha_1 = ' num2str(alpha_1(id1)) ', \alpha_2 = ' num2str(alpha_2(id2))])
    
        end
    end
    

    【讨论】:

    • 嗯,它们的形状都一样。
    • 我无法评论基于变量的函数的平滑度。也许尝试使用截然不同的 alpha1 和 alpha2。还要仔细检查它们是否都在相同的范围内,也许你没有比较喜欢。
    • @ursmooth 这个回答了你的问题吗,如果它确实让我们标记为,否则请告诉我答案是否可以改进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 2016-09-20
    • 2018-06-11
    • 2021-03-18
    • 2015-12-17
    • 1970-01-01
    相关资源
    最近更新 更多