在matlab的readmatrix函数中使用变量

hpxqektj  于 2022-12-13  发布在  Matlab
关注(0)|答案(2)|浏览(405)

我有一个多年火车票价的数据集-我的代码要求用户输入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')

我试过改变代码来显示一个特定的年份,而不是变量'year',这返回的数据只是不是什么是由用户选择的。This is how my excel spreadsheet is spread out我收到的错误消息说:使用readmatrix时出错此上下文中不支持“XLSX”格式。在安装了Excel的Windows上将“UseExcel”参数设置为true,以读写“XLSB”或“ODS”文件以及具有交互功能(如公式和宏)的电子表格。
plot_data(第4行)数据=读取矩阵(“train_fares.xlsx”,“工作表”,年份,“范围”,“A1:A3”)中出错

nfs0ujit

nfs0ujit1#

您正在使用此

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

根据inputdocs,它将被计算,因此类似于

>> 2022

被MATLAB解释为数值输入2022
您需要为input提供's'说明符,这将阻止对输入的求值并将其保留为char。

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

这是一个无效输入,因为'sheet'输入应为字符。
"所以你的第一行应该变成"

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

ht4b089n2#

Wolfie的答案是正确的,如果您需要更大的灵活性(例如,如果您想参数化行和列),我将以此为基础进行构建。
如果您有一个新的数据库,那么您就可以使用这个数据库了。评估(命令)
在此执行中,year、row和column都是整数(double),sprintf命令形成了可以使用eval()执行的命令字符串

相关问题