使用GUI绘图

时间:2017-04-01 15:11:00

标签: matlab graphing

使用

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

1 个答案:

答案 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'