我正在嘗試在MATLAB中編寫一個函數,它將採用矩陣中相當大的excel文件分組來讀取和分析數字(因爲有很多excel文件和大量數字)。我有主函數調用一個函數,該函數應該從main函數的矩陣中取出excel文件的名稱,並使用函數'xlsread'來讀取適當的單元格。每個文件具有相同的格式和相同數量的列和行,因此指定要讀取的單元格不是問題。但是,要將每個excel文件傳遞給讀取輸入函數,我將excel文件的名稱分配給一個變量,然後將其傳遞給read函數,然後將該變量傳遞給xlsread。但是,當我運行它時,出現錯誤:「文件名必須是字符串。」以下是我如何設置代碼的示例。MATLAB字符串變量
filenames = {'file1.csv','file2.csv',....};
for i=1:10
file=filenames(i);
data=readin(file);
end
function [sheetdata] = readin(filename)
sheetdata = xlsread(filename,'cellrange','sheet');
end
這可能嗎?
只是fyi,xlsread函數將參數作爲字符串。第一個參數是該文件的名稱,如:
「file1.xls」
第二個參數是細胞要導入的範圍內,例如:
「B2:D5」
這告訴MATLAB導入在包含在與B2的左上角和D5的右下角的矩形的單元中的數據。
感謝您的任何幫助。
編輯:我可以得到它,如果我直接分配變量的文件名,例如工作:
name='file1';
xlsread(name,'A1:C5');
所以我想這個問題就在於我如何設置文件名的矩陣。我想這樣設置它,因爲我不知道有多少張最終將不得不進行分析,並通過使用一個矩陣,我可以添加,刪除或編輯任何容易和快速的牀單,而無需改變我的代碼的任何其他部分。
謝謝,這樣做。在我的代碼中,我確實用{}指定了矩陣,但在文件= filenames {i}行中沒有{}。 – Kevin