MATLAB - 生成函数时只读取第一列变量

时间:2014-07-17 19:54:15

标签: excel matlab file-io import user-defined-functions

这可能是一个基本问题。我是初学者。

当我尝试导入一个包含5列和第1行作为列标题的excel文件,并生成用于执行相同操作的函数时,MATLAB不会根据列标题生成5个变量,而是只生成一个变量使用默认名称ans。

请帮助。

以下是代码:

function [Date,Open,High,Low,Close] = importfile(workbookFile,sheetName,startRow,endRow)

% If no sheet is specified, read first sheet
if nargin == 1 || isempty(sheetName)
    sheetName = 1;
end

% If row start and end points are not specified, define defaults
if nargin <= 3
    startRow = 2;
    endRow = 250;
end

%% Import the data, extracting spreadsheet dates in MATLAB serial date number format (datenum)
[~, ~, raw, dateNums] = xlsread(workbookFile, sheetName, sprintf('A%d:E%d',startRow(1),endRow(1)),'' , @convertSpreadsheetDates);
for block=2:length(startRow)
    [~, ~, tmpRawBlock,tmpDateNumBlock] = xlsread(workbookFile, sheetName, sprintf('A%d:E%d',startRow(block),endRow(block)),'' , @convertSpreadsheetDates);
    raw = [raw;tmpRawBlock]; %#ok<AGROW>
    dateNums = [dateNums;tmpDateNumBlock]; %#ok<AGROW>
end

%% Replace date strings by MATLAB serial date numbers (datenum)
R = ~cellfun(@isequalwithequalnans,dateNums,raw) & cellfun('isclass',raw,'char'); % Find spreadsheet dates
raw(R) = dateNums(R);

%% Create output variable
data = reshape([raw{:}],size(raw));

%% Allocate imported array to column variable names
Date = data(:,1);
Open = data(:,2);
High = data(:,3);
Low = data(:,4);
Close = data(:,5);

1 个答案:

答案 0 :(得分:1)

执行[Date,Open,High,Low,Close] = importfile('filename.xlsx');