【问题标题】:MATLAB - Only first column variable gets read when generating functionMATLAB - 生成函数时只读取第一列变量
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 谢谢。现在工作得很好:)
  • @Manganese 请选中复选框以表明您接受答案。 :)
猜你喜欢
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
  • 2017-08-25
  • 2015-05-02
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多