2016-11-13 87 views
0

我写了一些用于天线设计的Matlab代码,现在我想为这个项目制作一个用户友好的GUI,以便其他人也可以轻松使用它。一个独立的MATLAB GUI应用程序的最小例子

之前我移动到实际的GUI开发,我想获得的Matlab的是否是一个基于GUI的应用的理想选择,在

方面的整体印象

一)是否容易/简单的创建,
b)用户是否有可能在没有Matlab许可证/安装的情况下使用产生的应用程序。

请有人可以提供最小MATLAB GUI例如展示MATLAB图形用户界面的基本概念,我得到的所涉及的想法,并指出我在正确的方向上我怎么可能部署此作为独立的matlab应用程序,如果这是可能的?


可选 - (根据意见,觉得免费的,如果你感到强烈的#2“意见”忽略):我还想了解它是否是一般的好选择相对于其他典型的选项任何解释性意见,或者如果人们会建议我为了GUI应用程序的特定目的而从matlab迁移到另一种语言(以及为什么)。

回答

5

Matlab(在我看来)是设计图形用户界面最简单的语言之一,因为所有你需要做的就是将ui元素添加到普通的数字窗口中并作为回调链接到标准函数。还有一个图形工具可以创建这些工具,名为GUIDE,但我从来没有打扰过它,因为首先用手编写它非常简单。

下面是一个简单的“应用程序”绘出螺旋形,以控制其规模的滑块控制:

%%%%%% In file myplot.m %%%%% 
function myplot 

    %% Create initial figure and spiral plot 
    figure; axes ('position', [0.1, 0.3, 0.8, 0.6]); 
    t = linspace (0, 8*pi, 100); x = t .* cos(t); y = t .* sin(t); 
    plot (x, y); axis ([-100, 100, -100, 100]); 

    %% Add ui 'slider' element  
    hslider = uicontrol (     ... 
     'style', 'slider',    ... 
     'Units', 'normalized',   ... 
     'position', [0.1, 0.1, 0.8, 0.1], ... 
     'min', 1,       ... 
     'max', 50,      ... 
     'value', 10,      ... 
     'callback', {@plotstuff}   ... 
     ); 

    %% Callback function called by slider event 
    function plotstuff (h, event) 
    n = get (h, 'value'); 
    x = n * t .* cos(t); y = n * t .* sin(t); 
    plot (x, y); axis ([-100, 100, -100, 100]); 
    end 
end 

enter image description here

关于你提到的第二个问题,有的方式来创建独立应用程序没有安装matlab的用户,但需要注意的是,您需要将Matlab Compiler工具箱打包为独立的a pp和

b)您的最终用户将不得不安装Matlab Compiler Runtime以便代码运行。 (类似于您需要安装Java运行时才能运行Java代码)。

如果上述两者都不是你的代言人,那么是的,matlab是你的gui应用程序的一个合适和直接的选择。


PS1:有用的链接:https://uk.mathworks.com/discovery/matlab-gui.html
PS2:八度稍落后于MATLAB的GUI功能,你应该避免嵌套函数回调,但否则其全新的Qt界面已经与一些UI元素的功能了。所以对于简单的吉他,倍频应该也很好,而且值得一试(也是免费的,开放的,更容易部署的,在我看来也是如此)。

0

没有。即使开发一个简单的GUI是一个拖放小部件,然后在代码中编织的问题,但这并不值得。第一个MATLAB是封闭源代码,第二个,它需要任何其他用户先下载MATLAB,然后使用你的脚本。

如果你只想为自己做,或者这是你第一次尝试在GUI上继续前进。

编辑:正如rayryeng指出的那样,您还可以将MATLAB作为库嵌入到C/C++程序中。然而,像GTK这样的更好的库在控件和可移植性方面更加丰富。

+2

虽然您的观点是有效的,但如果您希望运行这些应用程序,则可以将MATLAB应用程序部署到本地C或C++,而不需要MATLAB运行系统。我建议你改变你的答案以反映这一点,因为它不完全准确:https://www.mathworks.com/products/matlab-coder/ – rayryeng