MATLAB:数据点不会连接?

时间:2015-09-27 12:44:46

标签: matlab plot

我只有两周的编程/ Matlab经验,所以我只是一个初学者。在我的代码中,我想将mu绘制为alpha的函数。当我显示mu时,它显示每个alpha值的10个mu值。但是,当我绘制图形时,它将mu的值作为单独的点。但我希望这些点只与一条线相连。我该如何解决这个问题?

n=40; %number of months
p=0.23; %probability of success
num_of_simulations=100;
s=rng; x = rand(1,n)<p;
rng(s);

hold on; 
for alpha=0.01:0.01:0.1;
    for i=1:num_of_simulations
        x = rand(1,n)<p;

        S0=5000; %initial value
        Y(1)=S0*alpha; %deposit

        for k=1
            if x(1,1)==1;
                S(1, i)=S0+2*Y(1);
            else
                S(1, i)=S0-Y(1);
            end
        end

        for k=2:n
            Y(k)=S(k-1, i)*alpha;
            if x(1,k)==1;
                S(k, i)=S(k-1, i)+2*Y(k);
            else
                S(k, i)=S(k-1, i)-Y(k);
            end
        end

        Sn(i)=S(n,i); %end value for each simulations
    end

    mu=mean(Sn);
    disp(mu);
    plot(alpha,mu);
end

1 个答案:

答案 0 :(得分:2)

您的点未连接的原因是您分别绘制每个点。如果我们采用不同的方法并从alpha = 0.01:0.01:0.1;循环定义中取出for,然后将for循环定义更改为for j=1:numel(alpha),我们仍然可以遍历alpha的每个元素1}}。现在我们需要将循环中alpha的每次使用更改为alpha(j),以便我们引用alpha的当前元素而不是每个元素。接下来我们需要将mu更改为mu(j)。这意味着当整个循环结束时,我们存储了alphamu的所有值,并且对plot(alpha, mu)的1次调用将绘制连接点的数据,如< / p>

plot

这也使我们也可以删除hold on;,因为我们只绘制一次。

我在这里已经包含了完整的编辑代码供您查看。这些变化是微不足道的,应该是有道理的。

clear all
close all

n = 40; %number of months
p = 0.23; %probability of success
num_of_simulations = 100;
s = rng;
x = rand(1, n) < p;
rng(s);

alpha = 0.01:0.01:0.1;

for j = 1:numel(alpha)

    for i = 1:num_of_simulations
        x = rand(1, n) < p;

        S0 = 5000; %initial value
        Y(1) = S0*alpha(j); %deposit


        for k = 1
            if x(1, 1) == 1;
                S(1, i) = S0 + 2*Y(1);
            else
                S(1, i) = S0 - Y(1);
            end
        end

        for k = 2:n
            Y(k) = S(k-1, i)*alpha(j);
            if x(1, k) == 1;
                S(k, i) = S(k-1, i) + 2*Y(k);
            else
                S(k, i) = S(k-1, i) - Y(k);
            end
        end

        Sn(i) = S(n, i); %end value for each simulations
    end

    mu(j) = mean(Sn);
    disp(mu(j));
end

plot(alpha, mu);