1

xdataが(行列ではなく)セルの配列として格納されている(プロットコマンドを使用していない)図があります。私がしたいのは、プロットを水平方向にシフトすることです。これは、xdata の各要素に定数値を追加するか、プロットに影響を与えずに x 軸をシフトすることで実行できます。

私はそうすることができません。本当に助けていただければ幸いです。ところで、MATLAB に関する私の知識は非常に限られています。

これは私が試したもので、エラーが発生しているようです: set(findobj('type', 'line', 'color', 'r',),'xdata', new)

ここで、'new' は 'xdata' と同じ次元の別のセル配列です。しかし、これがエラーになる理由がわかりません:「セルから double への変換は不可能です」

4

1 に答える 1

0

まず第一に、セル配列を返す理由get(findobj('type', 'line', 'color', 'r',),'xdata')は、図に複数の赤い線があるためです。Figure メニューの白い矢印アイコンをクリックし、行の 1 つを選択して を呼び出すと、個々の行get(gco,'xdata')の -property が通常の数値配列のままであることがわかります。xdata

xdataグラフィカル オブジェクトのリストのプロパティを設定するには、中かっこで囲む必要があります (コマンドのドキュメントをset参照してください)。

 horizontalShift = 100;
 old = get(findobj('type', 'line', 'color', 'r',),'xdata');
 new = cellfun(@(x)x+horizontalShift,old,'UniformOutput',false);

 set(findobj('type', 'line', 'color', 'r',),{'xdata'}, new)
于 2013-03-18T08:44:48.863 に答える