How to fix the Index exceeded array dimensions,Index value 2 exceeded valid range [1-1] for array 'Hv'

1查看(最近30天)
咀嚼日圆李
咀嚼日圆李 2021年5月15日
回答: VBBV 2021年5月16日
当运行如下所示的代码时,出现了一些错误,该代码是标量引用调控器的代码。在我运行代码之后,它显示给我 索引超出数组维度。索引值2超出了数组'Hv'的有效范围[1-1]。错误的 srg_lp / srg. ”( 第18行 )” 希望那些在这个领域的专家可以帮助我解决这个错误。为 Hx和Hv是矩阵A,B,C,D的最大允许输出集(MAS),其中MAS=Hx+Hv<=s,其中s是需要满足的最大输出
一个= [0]-275.5 -21.22 1;;
B = [11.02, 275.5];
C = 0 [1];
D = 0;
我眼睛= (2);
Hx = (C *);
hv = c *(i-a)*((i-a)^ - 1)* b;
e = 0.2;
s = 100;% s = max_y
k = 1;% intialize k
%检查约束,s是否满足
i = 1:350
如果HX(i)+ HV(i)<=(1-e)* s%第一行不变项不满足时,k将减小
k = k + 0.00000001;
elseifHx(我)+高压(i) < =%第二和以下行常数不满足,k将下降
k = k + 0.00002;
其他的
k = k - 0.000000008;
结束
结束
v = v_previous + k * (r-v_previous);
结束

答案(2)

图像分析
图像分析 2021年5月15日
我不知道这些公式在做什么
Hx = (C *);
hv = c *(i-a)*((i-a)^ - 1)* b;
但是Hx是一个1x2的行向量而Hv是一个标量。要引用i大于1的Hv(i),你需要它是一个有350个元素的向量。对于大于2的Hx也是一样。
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年5月15日
用于创建Hv的哪个矩阵至少有350个元素?你不分配给内部的高压循环,所以访问高压(我)我= 350高压必须至少有350个元素,这将要求其修建从矩阵与许多元素(例外:隐式扩张可以创建与39元素划分为25 - 14不同方向的)

登录评论。


VBBV
VBBV 2021年5月16日
%如果这是真的
h = 1 (350 1);
i = 1:350
如果Hx * h (i) +高压* h (i) < =(单电子)*%第一行不变项不满足时,k将减小
k = k + 0.00000001;
elseifHx * h (i) +高压* h (i) < =%第二和以下行常数不满足,k将下降
k = k + 0.00002;
其他的
k = k - 0.000000008;
结束
结束
你可以这样做约束检查

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!