0

私はこのようなものを持っています:

p = plot([0 1], [0 1], [1 2], [1 2]);

各ペアを取り、別の番号を追加したいと思います。

x = get(p, 'XData');
y = get(p, 'YData');

x1 = mat2cell([x{1} double(2)]);
y1 = mat2cell([y{1} double(2)]);

x2 = mat2cell([x{2} double(3)]);
y2 = mat2cell([y{2} double(3)]);

set(p, 'XData', [x1; x2], 'YData', [y1; y2]); % this does not work

drawnow;

「get」はある形式のデータを与えており、各ペアにもう 1 つの値を持つデータを同じ形式に「設定」しています。

私が得るエラーは次のとおりです。セルから倍精度への変換は不可能です。

4

2 に答える 2

1

プロットを再描画してみてください:

xcoor = cellfun(@horzcat, get(p, 'XData'), {2; 3}, 'UniformOutput', false);
ycoor = cellfun(@horzcat, get(p, 'YData'), {2; 3}, 'UniformOutput', false);
c = [xcoor; ycoor];
plot(c{:})
于 2013-08-26T15:40:17.377 に答える
1

現在のプロット ポイントを取得して追加するには、さまざまな方法があります。Eitan の回答(を使用)の最初の 2 行cellfunは一方通行です。とを使用cell2matしたものを次に示しnum2cellます。

newX = [2 3];  % New x values to add
newY = [2 3];  % New y values to add
X = num2cell([cell2mat(get(p,'XData')) newX(:)], 2);
Y = num2cell([cell2mat(get(p,'YData')) newY(:)], 2);

複数のハンドルで関数を使用するときに注意すべき重要な問題setは、ドキュメントからの抜粋に記載されています。

set(H,pn,MxN_pv) は m 個のグラフィックス オブジェクトのそれぞれに n 個のプロパティ値を設定します。ここで、m = length(H) であり、n は cell 配列 pn に含まれるプロパティ名の数に等しくなります。これにより、特定のプロパティ グループを各オブジェクトの異なる値に設定できます。

その結果、 への単一の呼び出しsetは次のようになります。

set(p, {'XData'}, X, {'YData'}, Y);

length(p)は 2 に等しく、プロパティ文字列はセル配列に配置され、XそれぞれY2 行 1 列のセル配列であることに注意してください。

于 2013-08-26T17:11:09.557 に答える