我在MATLAB m.file中有一个代码部分,用于在xlsx文件中导入耗电量数据。然后,程序将提示用户输入电网费用,进行必要的计算,然后绘制显示每个月和每年的消耗成本的条形图。在这部分代码中获得的变量将用于m.file
的其他部分然后我使用GUIDE为这个m.file创建了一个多页面GUI,但作为MATLAB中的新用户,我正在努力处理GUI编码。特别是导入文件,因为我希望用户能够查看和选择导入范围,而不是整个文件。我正在努力的另一件事是将此GUI中的数据提供给所有其他GUI页面。
GUI有2个面板。 1个面板包含4个edit_text框,供用户输入网格费用,以及一个“Enter”按钮。另一个面板包含一个用于显示条形图的轴,以及13个静态文本,它们将在计算完成后显示月度和年度成本的值。我希望轴和13个静态文本仅在用户用必要的网格费用填满编辑框后显示条形图和成本数据,然后单击“Enter”按钮。
我曾经看过一些在GUI中导入excel文件的例子,但是我看到的那些文件完全导入了文件,或者对于对GUI编码知之甚少的人来说太难了。有一个简单的解决方案吗?
答案 0 :(得分:1)
在Matlab中,xlsread函数有一个参数,您可以在其中指定要读入的工作表和范围。 http://www.mathworks.com/help/matlab/ref/xlsread.html
对于range参数,您可以像在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构建没有太多经验,但我认为您需要为希望与用户交互的组件添加回调函数。在这些回调函数中,您可以设置一个布尔值,指示用户是否已完成开始计算所需的操作。
最好的运气!
答案 1 :(得分:0)
在gui中使用编辑文本,用户可以在其中指定数据范围,然后你可以使用xlsread('filename',cell_array),(其中cell数组包含之前指定的编辑文本的字符串属性) 在另一个按钮的回调中,你必须设计在用户进入范围后执行。如果您使用GUIDE或以编程方式创建,则可以执行此操作。请注意我的英语,请稍微破旧