相关疑难解决方法(0)

MATLAB编程最佳实践

我正在寻找有关如何构建中型到大型MATLAB项目的资源,特别是那些涉及多个独立模块的项目.如何管理全局配置变量,如何将项目构建到文件夹中,如何管理模块之间的耦合等.

关于这个主题是否有某种标准文本?看起来大多数MATLAB教科书都是由科学家或工程师编写的.我想,我正在寻找的是由软件工程师编写的任何MATLAB教科书.:-)

matlab

33
推荐指数
2
解决办法
8559
查看次数

组织GUI代码的"正确"方法是什么?

我正在开发一个相当复杂的GUI程序,可以使用MATLAB Compiler进行部署.(有很好的理由使用MATLAB来构建这个GUI,这不是这个问题的重点.我意识到GUI构建不适合这种语言.)

有很多方法可以在GUI中的函数之间共享数据,甚至可以在应用程序中的GUI之间传递数据:

  • setappdata/getappdata/_____appdata - 将任意数据与句柄相关联
  • guidata - 通常与GUIDE一起使用; "存储[s]或检索[s] GUI数据"到句柄结构
  • set/get操作应用于UserData句柄对象的属性
  • 在主函数中使用嵌套函数; 基本上模拟"全局"范围变量.
  • 在子功能之间来回传递数据

我的代码的结构不是最漂亮的.现在我将引擎与前端隔离开来(好!)但GUI代码很像意大利面条.这是一个"活动"的骨架,借用Android说话:

function myGui

    fig = figure(...); 

    % h is a struct that contains handles to all the ui objects to be instantiated. My convention is to have the first field be the uicontrol type I'm instantiating. See draw_gui nested function

    h = struct([]);


    draw_gui;
    set_callbacks; % Basically a bunch of set(h.(...), 'Callback', @(src, event) callback) calls would occur here

    %% DRAW …
Run Code Online (Sandbox Code Playgroud)

matlab user-interface matlab-deployment matlab-guide

26
推荐指数
3
解决办法
2万
查看次数

MATLAB gui创建者GUIDE是否像我想的那样糟糕?还有其他选择吗?

我一直试图在MATLAB中组合一个gui并且遇到了很大困难.以下是关于我的程序的一些背景知识:我想创建一个向导来引导用户完成图像分析过程.向导将提示用户输入,然后在按下标有"下一步"的按钮后执行图像处理操作,依此类推.从阅读MATLAB帮助我相信gui创建有两种方法:1.用代码行写一个gui.2.使用GUIDE.

我认为GUIDE会有最浅的学习曲线.起初这个过程是直截了当的.我可以拖放按钮和文本框并轻松排列.我的计划是安排一系列面板,按钮和文字等,按下"下一步"按钮后,按顺序显示.就在这里,我变得难过了.

一旦我使用GUIDE保存面板,MATLAB就会创建一个.m文件和一个.fig文件.通过.m文件读取,我发现它为我提供了编写回调代码的空间,但没有其他的东西..fig文件是二进制文件,因此我不敢编辑它.我想知道如何控制对象,例如如何设置面板的可见性?此外,我必须分别创建向导的每个面板.我希望我可以手动将.m文件合并到一个wizard.m包装文件中,但我不认为这是正确的方法(至少对我来说,因为我看不到怎么做).

代替使用GUIDE我已经看过使用"uicontrol"函数创建guis的示例.这种方法对我来说似乎很乏味,因为我必须手动编码每个按钮的位置和大小以及默认值.也许这是最好的方法,但它吓倒了我.

因此,我对MATLAB因其看似笨重的gui工具感到不满,而且我对自己因为缺乏克服这个障碍而感到不满.

我已经看到在MATLAB中创建了一些花哨的guis并且我自己尝试了这个并且缩短了我对它们的存在感到困惑.无论是谁制作它们都是特殊的MATLAB用户(我不是),或者我错过了一些明显的东西,并且可以使用一些帮助.我现在正在质疑gui是否值得付出努力.我不认为自己正在探索类似QT的东西,因为将MATLAB代码嵌入其他语言(如python)的额外挑战.

有没有人就这个问题提出建议?任何人都可以指出我哪里出错或为什么我有这样的困难?

matlab user-interface wizard matlab-guide

18
推荐指数
2
解决办法
1万
查看次数

Matlab GUI应用程序中的软件工程和模式?

我被要求使用Matlab和GUIDE开发一个简单的GUI应用程序,它将与一个单独的后端引擎(也是Matlab)进行交互.我来自Java和.Net背景.

Matlab文档强有力地说明了如何在技术上做到这一点,但对"工程"过程几乎没有说明,特别是:

  • 如何打包/命名空间函数或创建库?

  • 如何最好地在文件系统上放置文件?

  • 如何实现典型的GUI模式,例如:MVC,观察者?

  • 这些问题在Matlab开发中是否有意义?

  • 还有其他常见的习语/陷阱吗?

直接建议或指向好的参考资料将非常有帮助.谢谢.

matlab design-patterns

10
推荐指数
1
解决办法
5217
查看次数

如何在MATLAB中编写GUI?

我需要在MATLAB中为我的项目创建一个GUI.我到处寻找如何编程GUI的例子,但我找不到很多东西.在MATLAB中有哪些优秀的GUI编程站点或技术?

matlab user-interface matlab-guide

8
推荐指数
2
解决办法
1万
查看次数

在MATLAB GUI中打破for循环

for在MATLAB的GUI的打开功能中有一个循环,我正在尝试使用回调按钮来打破循环.我是MATLAB的新手.这是我的代码:

%In the opening function of the GUI
handles.stop_now = 0;
for i=1:inf
   if handles.stop_now==1
      break;
   end
end


% Executes on button press 
function pushbutton_Callback(hObject, eventdata, handles)
% hObject    handle to end_segmenting_button (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
handles.stop_now=1;
guidata(hObject, handles);
Run Code Online (Sandbox Code Playgroud)

出于某种原因,尽管使用句柄定义变量,但按下按钮时循环不会中断.有谁知道发生了什么?谢谢.

matlab user-interface

6
推荐指数
1
解决办法
1万
查看次数

使用 MATLAB 同时播放多个视频

我搜索了互联网和堆栈溢出,但找不到解决方案,甚至找不到对我的问题有帮助的提示。

我需要在 MATLAB 中编写一个专门的视频注释软件,该软件必须能够在 GUI 上同时播放多个视频(至少 2 个)。视频文件采用 XVID 编码。到目前为止,我基本上只是调整了 mathworks.com 的视频播放示例(xylophon.avi,请参阅 movie() 描述)。

我熟悉 mmreader、VideoReader、movie 和 implay 功能,但仍然面临两个问题:

  1. 即使我只读入少量帧(如 xylophon.avi 示例),我的程序很快就会超出可用内存。而且,即使是相对较少的帧(比如 100),读取也需要相当长的时间。

  2. movie() 函数是同步的,因此在第一个视频完成之前第二个视频不会开始。如何同时调用两个 movie() 函数?或者是否有另一种方法可以同时显示两个(或更多)视频?

有什么建议么?谢谢!

video matlab video-processing

5
推荐指数
1
解决办法
5407
查看次数

如何在matlab gui中实现mvc设计的思想

请我是一名学生,他正在开发一个可视化工具,用于在matlab中使用mvc设计来分析数据.但我遇到的问题是,我不熟悉编程和matlab是第一个真正的编程即时通讯.香港专业教育学院几乎完成了代码,但我担心他们没有办法在mvc设计模式,所以我需要改变这一点.

我真的很欣赏尽可能多的推论将我与有用的材料联系起来,因为我无法在matlab中找到任何mvc,或者可能是在matlab中实现mvc的示例代码,以帮助我了解我如何做我的,目前和做这样的事情,其中​​数据是一个带有.ad和.Data文件的结构.函数/方法datcorrCoef和datCorrSum是我创建的函数,它接受我的数据对象作为参数


function dataAnalysisGUI(data)

fdataAnalysisGUI = figure('Name','Data Analysis ',...
    'tag','dataAnalysisGUI',...
    'menu','none',...
    'units','normalized',...
    'NumberTitle', 'off')



%%% intialise the gui with data set to work with
vtDaUD.opD = data;



Rsq = datcorrCoef(vtDaUD.opD);
opit = datWrappa(Rsq);
vtDaUD.wd = opit;
vtDaUD.feel = datCorrSum(data);
%%%------------------- menus ------------------------------------------%%%
smh = uimenu('Label', 'Sort', 'Tag', 'daSortMenu');
cmh = uimenu(smh, 'Label', 'Sum of CorrCoeff ',...
    'Tag', 'correlation');
    uimenu(cmh, 'Label', 'Increasing ',...
    'Tag', 'cIncreasing',...
    'callback','vtDaCallbacks(''cIncreasing_callback'')');
    uimenu(cmh, 'Label', 'Decreasing ',...
    'Tag', 'cDecreasing',...
    'callback','vtDaCallbacks(''cDecreasing_callback'')');
mmh = uimenu(smh, 'Label', 'Max Lag ',...
    'Tag', …
Run Code Online (Sandbox Code Playgroud)

model-view-controller matlab design-patterns

2
推荐指数
1
解决办法
3755
查看次数