tongweijuan 发表于 2015-10-1 11:41

matlab求解

m=[0.5 0 0 0.5 0 0 0.33;
    0.5 0 0 0.5 0.5 0 0.33;
    0.5 0 0 0.5 0.25 0.5 0.33;
    zeros(4,7);];
k=100;
x=0;
y=0;
for n=1:k
    r=rand();
    if r<=m(1,7)
          a=m(1,1);
            b=m(1,2);
            c=m(1,3);
            d=m(1,4);
            e=m(1,5);
            f=m(1,6);
            g=m(1,7);

    elseif r<=m(1,7)+m(2,7)
            a=m(2,1);
                b=m(2,2);
                c=m(2,3);
                d=m(2,4);
                e=m(2,5);
                f=m(2,6);
                g=m(2,7);
        elseif r<=m(1,7)+m(2,7)+m(3,7)
                 a=m(3,1);
                    b=m(3,2);
                    c=m(3,3);
                    d=m(3,4);
                    e=m(3,5);
                    f=m(3,6);
                    g=m(3,7);
    else
                    a=m(4,1);
                    b=m(4,2);
                    c=m(4,3);
                    d=m(4,4);
                    e=m(4,5);
                    f=m(4,6);
                    g=m(4,7);
     end               
                newx=(a*x)+(b*y)+e;
                newy=(c*x)+(d*y)+f;
                x=newx;
                y=newy;

end
            plot(x,y,'b','LineWidth',2)
想把每次产生的数都保留在一个绘图窗口里,怎么弄?请大神指教

GO雨林木风 发表于 2015-10-1 18:50

楼主的意思是生成一个表格形式的?matlab可以讲矩阵转化为excel,利用函数xlsread。或者你看matlab主窗口旁边有一个当前目录窗口,,双击你想知道的变量。就能出来一个表格。
如果找不到,就加一个0矩阵,每次运行的结果,赋值到这个矩阵对应位置的元素。

建模人生 发表于 2015-10-1 18:56

在开始建立0矩阵,把每次循环得到的值赋予零矩阵

士心之约 发表于 2015-10-1 19:01

m=[0.5 0 0 0.5 0 0 0.33;
    0.5 0 0 0.5 0.5 0 0.33;
    0.5 0 0 0.5 0.25 0.5 0.33;
    zeros(4,7);];
k=100;
x=0;
y=0;
for n=1:k
    r=rand();
    if r<=m(1,7)
          a=m(1,1);
            b=m(1,2);
            c=m(1,3);
            d=m(1,4);
            e=m(1,5);
            f=m(1,6);
            g=m(1,7);

    elseif r<=m(1,7)+m(2,7)
            a=m(2,1);
                b=m(2,2);
                c=m(2,3);
                d=m(2,4);
                e=m(2,5);
                f=m(2,6);
                g=m(2,7);
        elseif r<=m(1,7)+m(2,7)+m(3,7)
                 a=m(3,1);
                    b=m(3,2);
                    c=m(3,3);
                    d=m(3,4);
                    e=m(3,5);
                    f=m(3,6);
                    g=m(3,7);
    else
                    a=m(4,1);
                    b=m(4,2);
                    c=m(4,3);
                    d=m(4,4);
                    e=m(4,5);
                    f=m(4,6);
                    g=m(4,7);
     end               
                newx=(a*x)+(b*y)+e;
                newy=(c*x)+(d*y)+f;
                x=newx;
                y=newy;
                plot(x,y,'ob','LineWidth',2)
                hold on
end应该可以实现你的意思,你试试。{:3_41:}

森之张卫东 发表于 2015-10-1 19:07

%想把每次产生的数都保留在一个绘图窗口里,怎么弄?请大神指教
%时间:2015-10-1-国庆节
m=[0.5 0 0 0.5   0      0     0.33;
    0.5  0 0 0.5  0.5    0     0.33;
    0.5  0 0 0.5  0.25  0.5   0.33;
    zeros(4,7);];
k=100;
x=0;
y=0;
for n=1:k
    r=rand;
    if r<=m(1,7)
        a=m(1,1); b=m(1,2); c=m(1,3);
        d=m(1,4); e=m(1,5);f=m(1,6);
        g=m(1,7);
        
    elseif r<=m(1,7)+m(2,7)
        a=m(2,1);  b=m(2,2);   c=m(2,3);
        d=m(2,4);   e=m(2,5); f=m(2,6);
        g=m(2,7);
        
    elseif r<=m(1,7)+m(2,7)+m(3,7)
        a=m(3,1); b=m(3,2);c=m(3,3);
        d=m(3,4); e=m(3,5); f=m(3,6);
        g=m(3,7);
    else
        a=m(4,1); b=m(4,2); c=m(4,3);
        d=m(4,4);e=m(4,5); f=m(4,6);
        g=m(4,7);
    end
    newx=(a*x_me(1,k))+(b*y_me(1,k))+e;
    newy=(c*x_me(1,k))+(d*y_me(1,k))+f;
    x_me(1,k+1)=newx;
    y_me(1,k+1)=newy;
   
end
plot(x,y,'b','LineWidth',2)

tongweijuan 发表于 2015-10-22 20:11

士心之约 发表于 2015-10-1 19:01 static/image/common/back.gif
应该可以实现你的意思,你试试。

谢谢了,就是这样的
页: [1]
查看完整版本: matlab求解