1

我有一个图形(不使用 plot 命令),其中 xdata 存储为单元格数组(而不是矩阵)。我想要做的是水平移动绘图,这可以通过向 xdata 的每个元素添加一个常数值或在不影响绘图的情况下移动 x 轴来完成。

我不能这样做,并且非常感谢任何帮助。顺便说一句,我对 MATLAB 的了解非常有限。

这是我尝试过的,我似乎得到了一个错误: set(findobj('type', 'line', 'color', 'r',),'xdata', new)

其中“new”是另一个与“xdata”维度相同的元胞数组。但我不明白为什么这会导致错误:“无法转换为 double fromcell”

4

1 回答 1

0

首先,get(findobj('type', 'line', 'color', 'r',),'xdata')返回单元格数组的原因是您的图中有多条红色线条。如果您单击图形菜单中的白色箭头图标,选择其中一行并调用get(gco,'xdata'),您会看到xdata每一行的 -property 仍然是正常的数字数组。

为了设置图形对象列表的属性,您需要放入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 回答