我有一个图(不使用plot命令),其中xdata存储为单元格数组(而不是矩阵)。 我想要做的是水平移动绘图,这可以通过向xdata的每个元素添加一个常量值或移动x轴而不影响绘图来完成。
我无法这样做,非常感谢任何帮助。顺便说一句,我对MATLAB的了解非常有限。
这是我尝试过的,我似乎遇到了错误: set(findobj('type','line','color','r',),'xdata',new)
其中'new'是与'xdata'尺寸相同的另一个单元格数组。但是我不明白为什么这会导致错误:“转换为单元格不可能”
答案 0 :(得分:0)
首先,get(findobj('type', 'line', 'color', 'r',),'xdata')
返回单元格数组的原因是图中有多条红色线条。如果单击图形菜单中的白色箭头图标,选择其中一行,并调用get(gco,'xdata')
,则会看到每行的xdata
- 属性仍然是正常的数字数组
为了设置图形对象列表的属性,您需要将xdata
放入大括号中(参见documentation of the set
command):
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)