【发布时间】:2018-04-05 05:00:13
【问题描述】:
我正在尝试使用 MatLAB 从 m*n 数据表中选择特定数组。
错误消息:索引超出矩阵维度
检查下面的 MatLAB 脚本:
t_res = 0.2;
c_angle = 360/30;
iact = 0.1;
V = 12;
p = 1;
for p=1:length(p),
for p=1:5,
Time = p*t_res;
Angle = Time*c_angle/2;
if (p == 1)
delt_i = 0;
else
delt_i = 0.5* t_res* V /L_obt;
end
iact = iact+delt_i;
[~, ~, raw] = xlsread('F:\User\Matlab\data1.xlsx','Sheet3','A2:D11');
data = reshape([raw{:}],size(raw));
Current = data(:,1);
Angle1 = data(:,2);
Torque = data(:,3);
Fluxlinkage = data(:,4);
F = scatteredInterpolant(Current,Angle1,Fluxlinkage);
Fluxlinkage = F(iact,Angle);
L_obt = Fluxlinkage/iact;
F = scatteredInterpolant(Current,Angle1,Torque);
Torque = F(iact,Angle);
Table = [p' Time' Angle' iact' delt_i' abs(Torque)' Fluxlinkage' L_obt'];
fprintf('%d\t\t %f\t\t %f\t\t %f\t\t %f\t\t %f\t\t %f\t\t %f\n', Table');
end
p=p+1;
Table(3,5);
end
收到错误消息:尝试访问 Table(3,5);索引超出范围,因为 size(Table)=[1,8]
【问题讨论】:
-
请查看How to create a Minimal, Complete, and Verifiable example。你至少应该说出错误发生在哪里。
-
你不应该使用
p作为两个循环嵌套时的循环变量......而且你不需要p=p+1,因为for循环的要点是没有手册增量!看起来你应该只删除外部 for 循环。除此之外,不要在每个循环中读取相同的 Excel 数据,只需在循环外执行即可!没有上下文,这段代码真的毫无意义,并且可以通过上下文得到很大的改进...... -
我已经删除了外部循环以及 p=p+1。仍然与“尝试访问 Table(3,5); index out of bounds because size(Table)=[1,8].”相同的错误。
-
@Wolfie 请投票给这个问题,这可以帮助我提出问题,因为它对我来说被阻止了。
标签: matlab matrix datatable multi-index script