【问题标题】:use a variable in the readmatrix function in matlab在 matlab 的 readmatrix 函数中使用变量
【发布时间】:2022-12-11 15:12:55
【问题描述】:

我有一个跨年的火车票价数据集——我的代码要求用户输入从 2004 年到 2022 年的年份。然后代码应该显示数据集中那一年的 3 个值,但是它出现了错误。如何使用用户的输入来确定显示的工作表数据? 我使用的代码如下所示:

year = input('please select year between 2004 and 2022');
fprintf('you have chosen to see train fares from all sectors in %4.0f',year)
data = readmatrix("train_fares.xlsx",'sheet',year,'range','A1:A3')

我尝试更改代码以显示特定年份而不是变量“年份”,这将返回数据而不是用户选择的数据。 This is how my excel spreadsheet is spread out 我收到的错误信息是:Error using readmatrix 此上下文不支持“XLSX”格式。在安装了 Excel 的 Windows 上将“UseExcel”参数设置为 true 以读取和写入“XLSB”或“ODS”文件,并且 具有交互式功能(例如公式和宏)的电子表格。

plot_data 错误(第 4 行) data = readmatrix("train_fares.xlsx",'sheet',year,'range','A1:A3')

【问题讨论】:

  • 错误消息是了解错误原因的最重要的事情之一。
  • 如果不知道您的电子表格是如何设置的,我们将无法告诉您如何从中读取数据。但是,我建议加载所有数据,然后根据用户选择进行选择。

标签: function matlab variables input dataset


【解决方案1】:

你正在使用这个

year = input('please select year between 2004 and 2022');

根据 docs 对于 input,它将被评估,因此类似

>> 2022

被 MATLAB 解释为数字输入2022

您需要为 input 提供 's' 说明符,这将阻止对您的输入进行评估并将其保留为字符。否则当你使用它时

data = readmatrix("train_fares.xlsx",'sheet',year,'range','A1:A3')

这是一个无效的输入,因为 'sheet' 输入应该是一个字符。

所以你的第一行应该变成

year = input('please select year between 2004 and 2022','s');

【讨论】:

    【解决方案2】:

    Wolfie 的回答是正确的,如果您需要更大的灵活性(例如,如果您想对行和列进行参数化),我将以此为基础

    cmd = sprintf('data = readmatrix("train fares.xlsx",''sheet'',''%.0f'',''range'',''AN%.0f:A%.0f'') ',年份,行,列); 评估(命令)

    在此执行中,年、行和列都是整数(双精度),sprintf 命令正在形成可以使用 eval() 执行的命令字符串

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多