0

シミュレーションのデータが1つの.datファイルにあります。ファイルの1つの列(ここでは#13)に含まれる特定の基準(「bu」)に応じて、markersizeプロパティとmarkerfaceプロパティを定義しながら、さまざまなマーカーでデータをプロットしたいと思います。私が持っているのは、さまざまなケースのスイッチ環境です。必要なマーカーとプロパティを定義し、これらすべてをforループで定義して、すべてのシミュレーションデータを調べます。

私は次のことを試しました:

for i=1:s1(1)

bu = data1(i,13);

switch bu

    case 1
        set(h,'kd','MarkerSize',14,'MarkerFaceColor','k');
    case 2
        set(h,'kd','MarkerSize',14);
    case 3
        set(h,'k>','MarkerSize',14,'MarkerFaceColor','k');
    case 4
        set(h,'ks','MarkerSize',14,'MarkerFaceColor','k');
    case 5
        set(h,'ks','MarkerSize',14);
    case 6
        set(h,'ko','markersize',14);
    case 7
        set(findobj(gca,'k^','MarkerSize',14,'MarkerFaceColor','k'));    
end

figure(1);
h=plot(Re1(i),A1(i)); hold on
end

最初にハンドル「h」を使おうとしましたが、それは未定義であると言われました。h=plotは後で来るので推測します。次に、最後のケース(最初のシミュレーションの場合であるため、最初のラウンドでエラーが発生します)でfindobjを試しましたが、どちらも機能しませんでした(「不完全なプロパティと値のペア」-ここでの意味がわかりません) 。

また、これらすべてのプロパティを次のような文字列に入れてみました

str=['kd','MarkerSize',14,'MarkerFaceColor','k']

次に、

h=plot(Re1(i),A1(i),str); hold on

ただし、角かっこがある場合とない場合でも機能しません。

今、私はそれ以上のアイデアを持っていません、どんな提案にも感謝します!

4

2 に答える 2

1

これを行うにはいくつかの異なる方法があります。そのうちの1つは、すべてのプロットオブジェクトを事前に作成してから、データと書式設定の両方で入力します。

figureHandle = figure;
for i=1:s1(1)
plotHandle(i) = plot(0,0); %just creating valid handle for future here
end;
  • buスイッチを使用したforループの前、およびスイッチ内の上記のコード

set(ph(i)、'kd'、'MarkerSize'、14、'MarkerFaceColor'、'k'、'Xdata'、Re(1)、'Ydata'、A1(i));

strを使用したアプローチも機能しますが、2つのセル配列が必要になる場合を除きます。オプションと値は次のようになります。

firstoption = 'kd';
option = {'MarkerSize','MarkerFaceColor'};
value = {14,'k'};

h=plot(Re1(i),A1(i),firstoption); 
for i=1:length(option)
set(h,option{i},value{i});
end;
于 2013-01-11T21:18:08.393 に答える
1

あなたにとって最も簡単な変更は、スイッチブロックのセル配列にプロットオプションを配置することだと思います。例えば:

options = {'kd', 'MarkerSize', 14, 'MarkerFaceColor', 'k'};

後でプロットするとき:

plot(x, y, options{:})

私が行ったもう1つの方法は、変数を設定し、それらをplotコマンドで使用することです。

style = 'kd';
markerSize = 14;
markerFaceColor = 'k';
plot(x, y, style, 'MarkerSize', markerSize, 'MarkerFaceColor', markerFaceColor);
于 2013-01-11T21:19:10.493 に答える