2013-08-16 83 views
0

我有一個MATLAB m.file文件中的代碼部分,它導入xlsx文件中的耗電數據。然後,程序將提示用戶輸入電網費用,進行必要的計算,然後繪製條形圖,顯示每個月和每年的消耗成本。在這部分代碼中獲得的變量將用於m.file的其他部分從MATLAB中導入特定範圍的xlsx數據GUI

然後我使用GUIDE爲這個m.file創建了一個多頁面的GUI,但是作爲MATLAB中的一個新用戶,我在GUI編碼方面掙扎。尤其是導入文件,因爲我希望用戶能夠查看和選擇導入的範圍,而不是整個文件。另一件我很苦惱的事情是將GUI中的數據提供給所有其他GUI頁面。

該GUI有2個面板。 1面板包含4個edit_text框供用戶輸入電網費用,還有一個'Enter'按鈕。另一個面板包含一個將用於顯示條形圖的軸,以及13個靜態文本,它們將在計算完成後顯示每月和每年的成本值。我想讓軸和13個靜態文本顯示條形圖和成本數據,只有在用戶用必要的網格費用填充編輯框後,點擊'Enter'按鈕。

我已經看到了一些在GUI中導入excel文件的例子,但是我看到了一些完全導入文件的例子,或者對於幾乎不瞭解GUI編碼的人來說太難了。有沒有簡單的解決方案?

回答

1

在Matlab中,所述xlsread函數具有參數,從中可以指定片材和範圍來讀取英寸 http://www.mathworks.com/help/matlab/ref/xlsread.html

對於範圍參數,可以指定的範圍內,就像在Excel

離。

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

在第一個10x2單元中讀取。

不過,我建議你在Matlab中使用微軟的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構建了豐富的經驗,但我認爲您需要添加回調函數的您希望與用戶進行交互的組件。在這些回調函數中,可以設置一個布爾值,指示用戶是否已完成啓動計算所需的操作。

祝你好運!

+0

感謝您的意見。我已經在我的m.file函數中獲得了xlsread。我遇到的問題是讓它在一個GUI中工作,在這個GUI中用戶將能夠從他們導入的xls文件中導入他們指定的一系列數據。 GUI m.file和普通腳本之間的東西看起來很不一樣。 –

+0

您希望用戶如何選擇範圍?你是否想要在文件的特定單元格中指定它,例如'A1'?或者你想要在GUI中選擇的範圍? –

+0

我想讓它在GUI中完成。用戶將從GUI中瀏覽他們的excel文件,然後選擇導入範圍。 –

0

在gui中使用編輯文本,用戶可以在其中指定數據範圍,然後您可以使用xlsread('filename',cell_array)(其中單元格數組包含前面指定的編輯文本的字符串屬性) 在用戶輸入範圍後必須設計執行的另一個按鈕的回調中。它可以完成,如果你使用GUIDE或編程創建。請注意我的英語有點破舊