如何动态显示图中N个变量的演变?

时间:2012-06-08 21:36:31

标签: matlab matrix plot

我有一个NxM矩阵W,在函数中有浮点值。

我希望能够在图中显示每列X次迭代的演变。

伪代码将是:

- open a window to show all values of column 1 of W..
- open a window to show all values of column 2 of W..
... 
- open a window to show all values of column M of W

    for iterations=1 to X
    <here some updates on values in W are made>
    {
     for i=1:M {
       for j=1:N {
           update value of W(i,j) in window j (without re-opening the window)
       }
    }

    }

我知道这样做的方法就像使用plot函数一样,但即使阅读官方文档后我也不太了解它。

编辑3这是我现在的代码

  [~:X] = size(W);   
   for i=1:X
    plot(W(:,i));
    end

有效。但是如何设置“只是打印点”?以及如何设置一个数字的位置(我的意思是,我的数字不会出现在另一个之上?

我的完全目标如下: 假设W是10 * 3矩阵。

我想拥有3个数字。

在每个图中应打印(并更新一定次数)列i中所有值的值。值应打印为AS POINTS(不像每个点与其他点链接的函数)。

每个POINT表示元素W(i,j)。更确切地说,该图应该是N-D空间的二维空间中的表示,其中N = W的行数。

还有其他建议吗?

3 个答案:

答案 0 :(得分:3)

你正在尝试这个:

[~,X] = size(W);   
for i=1:X
    plot(W(:,i),[0:0.5:20],'none');
end  

哪个不起作用,因为W的每列有10行,[0:.5:20]有40个元素。你需要有匹配长度的向量才能使用,你不需要。

根据您的描述,我认为您可能正在寻找subplot,其中包含多个包含在单个“数字窗口”中的设置:

figure;
[R,C] = size(W); 
for i=1:C
    subplot(C,1,i); #% creates axes for each column
    plot(W(:,i),1:R,'.k'); #% has appropriate x values
                #%   ^---- '.k' indicates unconnected dots (.), colored black (k)
end 

从下面的评论中,提问者正在寻找一种创建图形窗口的方法,以便每个窗口最多包含4个子图。有很多方法可以做到这一点;我在下面列出了一个选项。

num_subplots = 4;
[R,C] = size(W); 
for i=1:C
    this_subplot_position = mod(i,num_subplots) + 1;
    if this_subplot_position == 1
        figure;
    end
    subplot(num_subplots,1,this_subplot_position); #% creates axes for each column
    plot(W(:,i),1:R,'.k'); #% has appropriate x values
                #%   ^---- '.k' indicates unconnected dots (.), colored black (k)
end 

答案 1 :(得分:1)

通过窗口,我希望你的意思是数字。你能澄清一下吗?你有一个二维数组,你想在单独的数字中逐列绘制该列?

figure(i);
plot(W(:,i),[0:0.5:20],linespecs); %to plot ith column on y axis, and x axis as ur [0:0.5:20]

要进行更新,只需更改值,它应相应地更改数字。

答案 2 :(得分:0)

Matlab包含一个名为refreshdata的命令,可以使这样的问题更容易一些。在下面的示例中,我们只绘制W的每一列,但我们设置了YDataSource属性,以便稍后调用refreshdata时图会自动更新。 YDataSource属性是包含有效变量或命令的字符串;在这里,第一个情节为W(:, 1),第二个情节为W(:, 2)等。

for i_plot = 1:M
    subplot(M, 1, i_plot);
    plot(W(:, i_plot), '.', 'YDataSource', ['W(:, ' num2str(i_plot) ')']);
end

for i_plot = 1:M
    for i_point = 1:N
        W(i_point, i_plot) = rand;
        refreshdata;
        pause(0.1);
    end
end