【发布时间】:2014-09-08 20:18:30
【问题描述】:
这可能是一个基本问题。我是初学者。
当我尝试导入具有 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);
【问题讨论】:
-
你是怎么调用这个函数的?
-
>>从命令行导入文件(文件名.xlsx)。之后,工作区中会显示一个变量,即 ans。这个变量是我正在导入的excel文件第一列的矩阵。
标签: excel matlab file-io import user-defined-functions