使用
x=-10:0.1:10
f=x+2
在基本的m文件中工作正常。
但是现在我正在尝试使用GUI绘制绘图,并输入一个函数。 它给了我一堆错误。当我有x设置的范围时,有没有人可以解释我如何给y赋值?
% --- Executes on button press in zimet.
function zimet_Callback(hObject, eventdata, handles)
% hObject handle to zimet (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
x=-10:0.1:10;
f=inline(get(handles.vdj,'string'))
y(x)=f
axes(handles.axes)
plot(x,y)
color=get(handles.listbox, 'value')
switch color
case 2
set(plot(x,y),'color', 'r')
case 3
set(plot(x,y),'color', 'g')
case 4
set(plot(x,y),'color', 'b')
end
style=get(handles.popupmenu, 'value')
switch style
case 2
set(plot(x,y), 'linestyle','--')
case 3
set(plot(x,y), 'linestyle','-.')
case 4
set(plot(x,y), 'linestyle',':')
end
rezgis=get(handles.grid, 'value')
switch rezgis
case 1
grid on
case 2
grid off
end
答案 0 :(得分:1)
请注意,根据inline function documentation,此功能将在以后的版本中删除;您可以使用anonymous functions
(见下文)。
inline
函数需要输入一个字符串作为输入,而get
函数将编辑框的文本作为cellarray
返回,因此您必须使用{转换它{1}}功能。
此外,一旦您生成了char
对象,它就是您的功能,因此您必须直接使用它。
使用内嵌
您必须以这种方式更改代码:
inline
使用匿名函数
您可以通过anonymous functions这种方式获得相同的结果:
x=-10:0.1:10;
% f=inline(get(handles.vdj,'string'))
% y(x)=f
f=inline(char(get(handles.vdj,'string')))
y=f(x)
axes(handles.axes)
ph=plot(x,y)
修改强>
您可以通过这种方式设置线条颜色和样式来解决问题:
x=-10:0.1:10;
% Get the function as string
f_str=char(get(handles.vdj,'string'))
% add @(x) to the string you've got
f_str=['@(x) ' f_str ];
% Create the anonymous function
fh = str2func(f_str)
% Evaluate the anonymous function
y=fh(x)
axes(handles.axes)
ph=plot(x,y)
的调用(它是图表的句柄(参见上文:plot
)ph=plot(x,y)
变量)替换对绘图的调用来调用set
。{/ li>
因此,要在ph
部分中更改颜色和线条样式:
switch
希望这有帮助,
Qapla'