matlab 从excel文件调用列时出错

i7uaboj4  于 2023-02-19  发布在  Matlab
关注(0)|答案(1)|浏览(288)

我尝试调用excel文件并将其运行到函数中,以便在MATLAB中输出给定时间、Angular 和半径的计算速度数组
这是我的代码:

function [vR,vTheta,v] = temp_func(time,radius,theta)
vR = (radius(2:1:end) - radius(1:1:end-1))./((time(2:1:end) - time(1:1:end-1)))
vTheta = (theta(2:1:end)*(pi./180) - theta(1:1:end-1)*(pi./180))./((time(2:1:end) - time(1:1:end-1)))
v = ((vR(1:1:end)).^2.+(vTheta(1:1:end)).^2).^(1/2)

end

如果我调用类似temp_func([0 1 2], [0 1 3], [0 0 180])的代码,这段代码就可以工作。
但是,我需要调用1083x3 excel文件(称为GPSData)中的列,我不确定如何直接调用此矩阵。
来分别调用第一、第二和第三列。但是我得到了这个错误:

Error using  () 
Subscripting into a table using one subscript (as in t(i)) is not supported. Specify a row subscript and a variable
subscript, as in t(rows,vars). To select variables, use t(:,i) or for one variable t.(i). To select rows, use t(i,:).
8xiog9wr

8xiog9wr1#

您看到的错误消息表明GPSData可能是一个表而不是矩阵。如果它是一个表,您可以使用表变量而不是矩阵索引来访问列。

GPSdata = readtable('excel.xlsx');
time = GPSdata.Time;
radius = GPSdata.Radius;
theta = GPSdata.Theta;

[vR, vTheta, v] = temp_func(time, radius, theta);

当然,假设Excel文件中的列标题是“Time”、“Radius”和“Theta”,您可以使用这些名称访问表中的相应列。
或者,可以使用table2array函数GPSmatrix = table2array(GPSdata);将表转换为矩阵,然后使用矩阵索引访问列。

time = GPSmatrix(:, 1);
radius = GPSmatrix(:, 2);
theta = GPSmatrix(:, 3);

相关问题