我正在编写一个用于 dicom 图像和光谱学的工具,我想在我制作的函数之间使用很多共享数据。我有自己制作的 GUI,不同的 slider 和按钮使用来自 dicom 文件的大量共享数据。
我一直在使用全局变量来存储所有这些函数共享的信息。我目前有很多全局变量。我被教导要尽可能避免全局变量,因为耦合会增加。在每个函数中从 dicom 文件中读取数据会更好吗?这似乎是多余的。将 MATLAB 用作面向对象的帮助吗?
最佳答案
我建议使用 application data结构。
应用程序数据是存储为应用程序定义的结构的基本数据,通常附加到 GUI 应用程序或图形窗口。
要使用应用程序数据 (appdata
),请使用 setappdata
和 getappdata
函数。例如,假设您有一个存储为 hGUI
的 GUI 句柄,下面的代码会向您的应用程序数据添加一个随机矩阵,然后稍后检索它(从 MATLAB 文档中提取)
% Save matrix for later
matrix = randn(35);
setappdata(hGUI, 'mydata', matrix);
% Do some stuff...
% Retrieve my matrix, this could be in a different file to `setappdata`
myMatrix = getappdata(hGUI, 'mydata');
您可以在您的应用程序数据中存储基本上任意的数据,并且您可以存储它并从您的任何源文件中获取它,只要 hGUI
引用您的 GUI 应用程序。
关于oop - MATLAB和全局变量的使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119489/