0

関数に浮動小数点値を含む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ますが、公式ドキュメントを読んでもよくわかりません。

EDIT 3これは私が今持っているコードです

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

できます。しかし、「印刷ポイントのみ」を設定するにはどうすればよいですか? フィギュアの位置を設定する方法(つまり、フィギュアが重なって表示されないのですか?

私の正確な目的は次のとおりです。W が 10*3 行列であるとしましょう。

フィギュアは3体欲しいです。

各図では、列 i のすべての値の値を印刷 (および特定の回数更新) する必要があります。値は AS POINTS として出力する必要があります (各ポイントが他のポイントとリンクしている関数とは異なります)。

各 POINT は要素 W(i,j) を表します。より正確には、図は N = W の行数である ND SPACE の 2-D SPACE での表現である必要があります。

さらに提案はありますか?

4

3 に答える 3

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 

以下のコメントから、質問者は Figure ウィンドウを作成して、それぞれに最大 4 つのサブプロットが含まれるようにする方法を探しています。これを行うには多くの方法があります。以下に1つのオプションを含めました。

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 
于 2012-06-09T00:37:14.503 に答える
1

窓辺とはフィギュアのことですよね。それを明確にしていただけますか?2次元配列があり、その列を列ごとに別の図にプロットしたいですか?

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]

更新するには、値を変更するだけで、それに応じて数値が変更されます。

于 2012-06-08T22:12:48.403 に答える
0

Matlabには、refreshdataこのような問題を少し簡単にするというコマンドが含まれています。以下の例では、すべての列をW1回だけプロットしYDataSourceますが、後で呼び出すときにプロットが自動的に更新されるようにプロパティを設定しますrefreshdata。プロパティは、YDataSource有効な変数またはコマンドを含む文字列です。ここでW(:, 1)は、最初のプロット、W(:, 2)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
于 2012-06-09T07:18:51.543 に答える