0

我在 MATLAB m.file 中有一个代码部分,它在 xlsx 文件中导入电力消耗数据。然后程序会提示用户输入电网费用,进行必要的计算,然后绘制一个条形图,显示每个月和每年的消耗成本。在这部分代码中获得的变量将用于 m.file 的其他部分

然后我使用 GUIDE 为这个 m.file 创建了一个多页 GUI,但是作为 MATLAB 的新用户,我在 GUI 编码方面遇到了困难。特别是导入文件,因为我希望用户能够查看和选择导入范围,而不是整个文件。我正在努力解决的另一件事是使该 GUI 中的数据可用于所有其他 GUI 页面。

GUI 有 2 个面板。1 个面板包含 4 个编辑文本框供用户输入电网费用,以及一个“输入”按钮。另一个面板包含一个用于显示条形图的轴,以及 13 个静态文本,这些文本将在计算完成后显示每月和每年的成本值。我希望轴和 13 个静态文本仅在用户用必要的网格费用填充编辑框后才显示条形图和成本数据,然后单击“输入”按钮。

我已经看到了一些在 GUI 中导入 excel 文件的示例,但是我所看到的那些完全导入文件,或者对于对 GUI 编码知之甚少的人来说太难了。有一个简单的解决方案吗?

4

2 回答 2

1

在 Matlab 中,xlsread 函数有一个参数,您可以在其中指定要读取的工作表和范围。 http://www.mathworks.com/help/matlab/ref/xlsread.html

对于范围参数,您可以像在excel中一样指定范围

前任。

xlsread('filename', 'A1:B10')

读取前 10x2 个单元格。

但是,我建议您在 Matlab 中使用 Microsoft 的 VBA 语言来导入数据,具体取决于您的 excel 文件的大小。我发现这种方法对于更大的数据集更有效。

如果您有兴趣,这是一个如何使用它的示例:

excelObj = actxserver('Excel.Application');
fileObj = excelObj.Workbooks.Open(filename);
sheetObj = fileObj.Worksheets.get('Item', sheetnumber);

%Read in ranges the same way as xlsread!
indata = sheetObj.Range('A1:B10').Value;

我没有太多使用指南构建 GUI 的经验,但我认为您需要为希望与用户交互的组件添加回调函数。在这些回调函数中,您可以设置一个布尔值,指示用户是否已完成启动计算所需的操作。

祝你好运!

于 2013-08-16T04:37:03.987 回答
0

在 gui 中使用编辑文本,用户可以在其中指定数据范围,然后您可以在另一个回调中使用 xlsread('filename', cell_array),(其中单元格数组包含先前指定的编辑文本的字符串属性)用户进入范围后必须设计执行的按钮。如果您使用 GUIDE 或以编程方式创建,则可以完成。请注意我的英语有点破旧

于 2014-11-05T07:31:46.077 回答