为什么我得到错误'下标索引必须是实正整数或逻辑。'

1,405意见(过去30天)
为什么我收到以下错误消息:
错误:下标索引必须是实数或逻辑数。

接受的答案

MathWorks支金宝app持团队
编辑:MathWorks支金宝app持团队 2021年2月17日
当您试图使用非正整数或逻辑值索引数组时,将发生此错误。以下是一些常见情况下导致此错误消息的提示:
1)仔细检查你的索引是否为正整数。在MATLAB中,索引不能为0,并且默认从1开始。
2)如果使用逻辑索引索引到阵列中,请确保您的索引数组是“逻辑”类型,而不是1S和0S的“双”阵列。在尝试使用逻辑索引之前,您可以将“双”数组转换为逻辑阵列。例如:
A = [1 2 3 4;5 6 7 8];
Ind_double = [0 1 0 1;0 1 0 1];
ind_logical =逻辑(ind_double);
(ind_logical)
对于索引数组“IND”,您可以使用“WHOS”功能检查其数据类型:
印第安纳州
如果你使用浮点运算来计算索引数组,那么数组的值可能不是精确整数。当您知道您的索引值接近您想要的整数索引时,'round'函数是很方便的。例如,
A = [1 2 3 4;5 6 7 8];
ind_float = 2.00001;
ind_int = round(ind_float);
a(ind_float)
下面是一种检查索引数组“ind”是否包含精确整数值的方法。该命令返回一个'logical'数组,其中1表示索引值是精确整数,0表示不是。
印第安纳州= =圆(印第安纳州)
4)如果将变量分配给Matlab中的同名函数,则将覆盖该功能并在尝试调用它时遇到错误。例如,
max = rand(5);
一个=兰德(5);
最大(a)
在此活动中,重命名您的变量并清除旧的变量继续进行:
b = max;
清晰的马克斯·马克斯(A)
有关MATLAB中索引的更多信息,请参阅以下文档页:
6个评论
沃尔特·罗伯森
沃尔特·罗伯森 2018年9月25日
“这在最近的Matlab更新中有改变吗?”(我从2013年更新到2017年)。在此之前,我从来没有把双引号转换为逻辑引号。”
R2013A:
>> A = RAND(1,3),a([1 0 0])
A =
0.8147 0.9058 0.1270
下标指标必须是实正整数或逻辑数。
与R2010bSP1相同,它是我目前碰巧安装的最古老的MATLAB。
如果我们检查R14文档, //www.tatmou.com/help/releases/r14/techdoc/matlab.html. 在" Special Characters [] () {} = ' . ... .,;: % !@ "我们看到,
" V的分量必须是用作下标的整数。如果任何这样的下标小于1或大于x的大小,则发生错误。”
这不是一个新的限制,不,在MATLAB中没有设置可以改变这一点。

登录评论。

更多的答案(20)

安东尼Pichot
安东尼Pichot 2015年11月19日
Iaredi Sabinas的评论应该是一个有效的答案。
当你有一个以现有的matlab函数命名的变量时,比如min或diff, matlab会认为你使用的是这个变量而不是内置函数。
1条评论
斯蒂芬。
斯蒂芬。 2015年11月19日
这是 已经 部分答案是: “另一个常见的原因是变量覆盖了函数名称,因此是阴影函数。例如:......” 然后它继续给出一个例子,说明这是如何发生的。

登录评论。


Schrecklich呃
Schrecklich呃 2017年3月18日
编辑:沃尔特·罗伯森 2017年4月4日
我得到了这个消息,当我试图使用'imread'处理图像,我有以下结构:
I = 1: f
j = 1:c
B (i, j) = ([A1 (i, j) * A2 (i, j)]);
B1 (i, j) = (A2 (i, j) / A1 (i, j));
结束
结束
我得到了同样的错误信息,所以直到30分钟的研究,我只是把字母“i”换成了“k”,错误信息消失了,我认为错误在那里,因为字母“i”是用来表示虚数的。
只是一个小提示!希望对大家有用。

法拉Nadiah
法拉Nadiah 2016年4月22日
这个怎么样。有星号的单词…我怎么声明,如果我运行这个程序,它得到错误,谢谢很多
我= 0:1:maxrow-1
j = 0:1: maxcol-1
% inv([i, j]) = 255 - image([i, j]);
K = 0: 1
[i, j] = image([i, j])
结束
结束
结束
1条评论
沃尔特·罗伯森
沃尔特·罗伯森 2016年4月22日
MATLAB的索引从1开始,而不是0。你需要给所有的指标加1。
还要记住,sto([i, j, k])在3个位置为sto建立索引,即sto(i), sto(j), sto(k)。它不是3维数组的索引:3维数组是sto(i, j, k)

登录评论。


前任“老板”Pratyush Lohumi
编辑:沃尔特·罗伯森 2017年3月18日
n = 0: ns
s(n)=(ns-n)/ ns;%滑
Tmech (n) = ph值* V1eq ^ 2 * R2 / ((s (n) *ω)* ((R1eq + R2 / s (n)) ^ 2 + (X1 + X2) ^ 2));%机电转矩
结束滑环结束
错误:下标索引必须是实正整数或逻辑数。(2行)
查询:似乎无法纠正错误吗?
如果有人可以为此循环提供有效的解释或更正的代码,那将真正帮助我的项目。
3评论
实施BOUGRINE
实施BOUGRINE 2017年4月4日
m = 1: num_pulse_int
%更新传感器和目标位置
[sensorpos, sensorvel] = sensormotion(1 /脉冲重复频率);
[tgtpos, tgtvel] = tgtmotion(1 /脉冲重复频率);

登录评论。


padmini kutturu
padmini kutturu 2017年4月26日
编辑:沃尔特·罗伯森 2017年4月26日
有人能帮我一下吗?谢谢你!
j = 1:n
y (j) = (T (j) ts) / (Tb-Ts);
h(j)=(1/427)*( - 0.0717)* l *(tb-ts)*(y(j + 1)-y(j-1)/ 2 * deltas);
r (j) = (e *σ* L ^ 2 * P * Ts ^ 3) / (kAc) * (((T (j) / Ts) ^ 3) + ((T (j) / Ts) ^ 2) + (T (j) / Ts) + 1);
c (j) = 1 - (h (j) *δ/ 2);
(j) = 2 + (r (j) *三角洲^ 2);
b (j) = 1 + (h (j) *δ/ 2);
结束
3评论

登录评论。


惠灵顿佩雷拉古埃德
惠灵顿佩雷拉古埃德 2017年10月3日
有生长能帮我。在下面使用此代码时,我得到了这个东西:
W2 = [];%将包含从图像中提取的水印信号
t = 1: wmsz
W2 = [W2 (D_w(印第安纳州(t, 1),印第安纳州(t, 2)) / D(印第安纳州(t, 1),印第安纳州(t, 2)) * 10)%水印提取
结束
1条评论
沃尔特·罗伯森
沃尔特·罗伯森 2017年10月4日
让我们匹配括号。该数字将是与以下字符对齐的开括号"after"的数量:
W2 = [W2 (D_w(印第安纳州(t, 1),印第安纳州(t, 2)) / D(印第安纳州(t, 1),印第安纳州(t, 2)) * 10)
1 2 3 4 3 4 32 3 4 3 4 4 321 0
我们从这里看到W2被索引
D_w(印第安纳州(t, 1),印第安纳州(t, 2)) / D(印第安纳州(t, 1),印第安纳州(t, 2))
1 2 1 2 10 1 2 1 2 10
包含一个部门。因此,对于索引到W2为整数,D_W(ID(T,1),IND(T,2))必须是D(IND(T,1),IND的非零整数精确整数倍数(t,2))。这种情况不是 不可能的 但我倾向于怀疑这一点。

登录评论。


Yago Veloso.
Yago Veloso. 2017年10月6日
编辑:沃尔特·罗伯森 2017年10月6日
嗨,大家好!我在我的代码中获得相同的错误,我正在尝试将函数连接到我的主代码,其中功能为我的代码提供了我的系统方程式解决方案的所有变量。
下面是我的主要代码的一部分,我发现这个错误:
[Y1des] =安(Z1, e1, s1, D);
[ac,ao,at_coluna,kp,r1,r2,l,vj,ro_ar,visc_ar,k_ar,ra,p,t_ar,tar_e,t_ar_ext,UREL_E,UREL,UABS_E,CPS,RO_P_AP,HPAREDE,CAL_LAT,CPAR,CPL,cpv,ro_p,dp,ubs,u,rep1,nu,hp1,st,rep2,hw1,e,ae1,ae,x1,t_seg,x,ae,hp,hw,d_xp,tt,z] = variaveis(H,Y1DES,HI,UAR,T_MIN);
[G,u, Pvse, Pve, UAEsat, UAE, He]= pro_ar (ro_ar,uar,ac, ao, at_coluna,t_ar, Tar_e, Urel_e, P);
(六世、镁、mss) = prop_leito (ro_p_ap、ro_p ro_ar, ac,嗨,vj);
% % %初始条件
Tp (1) = 298.15;
Tar_s(1)= Tar_e- ((1-exp(- x (1)))*(Tar_e- tp (1)));
tar_s (1) = tar_s (1) -273.15;
这是错误信息
下标指数必须是真正的积极
整数或逻辑。
错误在Dif_finitas_plus_ANN中(第44行)
tar_s(1)= tar_e -
((1-exp (- x (1))) * (Tar_e-Tp (1)));
谢谢您的帮助 !!
3评论

登录评论。


Markusp.
Markusp. 2018年2月5日
编辑:Markusp. 2018年2月5日
大家好,也许你们中有人能帮助我……一世tried to fix my problem with the solution above but it wasn`t possible.
如果i`m runnung以下skript,我会得到相同的错误消息。Skript用于解决特征方法的问题。
l = 1;
d = 0.01;
ρ= 1000;
f = 0.1;
= 1;
p0 = 2e3;
v0 = (p0 * 2 * d / f)) (l *ρ* ^ 0.5;
n = 101;
h = l / (n - 1);
(1: n) = v0;
p (1) = p0;
我= 2:n
p (i) = p(张)- f *ρ* v0 ^ 2 * h / (2 * d);
结束
dt = h /;
达峰时间= 3;
itmax =最高温度/ dt;
fhr = f * h / (2 * * d);
它= 1:ITMAX
t = * dt;
我= 2:n - 1
pa = p(张);
pb = p (i + 1);
弗吉尼亚州= v(张);
vb = v (i + 1);
电脑(我)= / 2 * ((pa + pb) / a +ρ* (va-vb) + fhr * (vb * abs (vb)弗吉尼亚州* abs (va)));
vc (i) = 0.5 * ((pa-pb) / (a *ρ)+ va + vb-fhr * (vb * abs (vb) + va * abs (va)));
结束
电脑(1)= p0;
vb = v(2);
pb = p (2);
vc (1) = vb + (pc (1) pb) /(*ρ)fhr * vb * abs (vb);
vc (n) = v0 *阀(t);
弗吉尼亚州= v (n - 1);
pa = p (n - 1);
电脑(n) = pa-rho * (vc (n) va) + f * h *ρ/弗吉尼亚州(2 * d) * * abs (va);%%错误在这一行
虚拟现实(,1:n) = vc (1: n);
总统(,1:n) = pc (1: n);
p =个人电脑;
v = Vc;
结束
我的阀门(t)函数是这样的:
函数vrel =阀门(t)
如果T <.1
vrel = 1;
其他的
约vrel = exp (-10 * (t));
结束
错误信息如下:
下标指标必须是实正整数或逻辑数。
错误在mocwaterhammer(第45行)
电脑(n) = pa-rho * (vc (n) va) + f * h *ρ/弗吉尼亚州(2 * d) * * abs (va);
谢谢你的帮助!

Torsten
Torsten 2018年2月5日
编辑:Torsten 2018年2月5日
您忘记了乘法标志:
电脑(n) = pa-rho * - > * < -行(vc (n) va) + f * h *ρ/弗吉尼亚州(2 * d) * * abs (va);
最好的祝愿
Torsten。


哈姆扎赛义德汗
Hamza Saeed Khan. 2018年12月21日
我认为它可能有所帮助。我自己从c(t)和m(t)中删除(t),如下所示:
clc
关闭所有
清晰的所有
%让我们赋值如下
A1 = 4
A2 = 2
f1 = 5
f2 = 6
t = 0.1:0.001:1
c = 20 * A1 * cos(2 *π)* f1
m = 12 * A2 * cos(2 *π)* f2
y = c * m
情节(y, t,'r'的)
包含(“c (t)”的)
ylabel (“m (t)”的)
网格
祝哈兹帕基斯坦人哈哈

Miguel Angel Guzman de la Cruz
我如何在for循环中放入一个以负数开头的范围?
类似的东西
对于i = -10000:100:10000
delta_g(我,1)= ((4 * R1 ^ 3 * sp * G) / 3) * (z1 / (z1 ^ ^ 2 + 2) ^ (3/2));
结束
Salu2


索非亚桑托斯
索非亚桑托斯 20月8日
你好,我尝试使用round()并将double转换为逻辑,但是当我输入“whoos maximum”或“whoos minimum”时,什么都没有显示。我现在想要计算上升时间的最小时间和最大时间。
你能不能看看我的代码,看看能不能帮上忙?非常感谢!!
data_org = importdata(西奈半岛,'\ t'7);%文本文件7列
EDA = data_org.data;
EDA = EDA (:, 6);我只想要第6列的值
T = N / f;
t =(1:n)/ fs;
最小= min (EDAuS_filter);
最大= max(edaus_filter);
amp = maximo-minimo;%信号幅度
tmin = t(缩印版);
达峰时间= t (maximo);
rise_time = tmax-tmin;
4评论
索非亚桑托斯
索非亚桑托斯 20月8日
我不是在函数的上下文中执行这个。这个想法是创建一个脚本,读取每个文本文件的六列,然后过滤信号,得到振幅和时间上升。但是找对应的t很麻烦。

登录评论。


Seahawkgo
Seahawkgo 2020年5月27日
编辑:沃尔特·罗伯森 2020年5月27日
请帮我解一个我有误差的函数的均值:
下标下标必须是实正整数或逻辑数
Chanprojectpart32错误(第36行)
E (Zr) =意味着(Zr);
=====================.
j = 1: n - 1
s1 = 0;
s2 = 0;
k = 1:否+ 1
phi =(pi - ( - pi))* rand-pi;%φk
fk = fd。*(cos((2 * pi * k)/ m));%颗
Bk =π/ k (+ 1) *;% k(π/不+ 1)
.............
............
y6 = cos(2* Fd*t +)
S1 = S1 + y1*y2;
S2 = S2 + y5*y2;
结束
zr = nn * s1 + mm *(y3 * y6);
Zi = NN*s2 + MM*(y4*y6);
结束
E (Zr) =意味着(Zr);
e(zi)=均值(zi);

Viktoriia Buliuk.
你好!我尝试对从.csv文件中获得的数据进行转换。你能帮帮我吗?我有以下错误:
subscript指数必须是真正的正整数或逻辑。
错误walvet > @(τ)hh(τ)*(2 /(3 ^(1/2)*π^ (1/4))* exp (- ((tau-ttt (j)) / (i)) ^ 2/2) * (1 - ((tau-ttt (j)) / (i)) ^ 2))
integralCalc/ iteratearrayvalue错误(第156行)
fxj =乐趣(t(1))。* w (1);
IntegrAlcalc / VADAPT(第130行)中的错误
[q,errbnd] = iterateArrayValue(U,Tinterval,Pathlen);
integralCalc错误(第103行)
[q, errbnd] = vadapt (@minusInfToInfInvTransform间隔);
积分误差(第88行)
Q = integralCalc(有趣,a, b, opstruct);
walvet错误(第26行)
Q = integral(F,-Inf,Inf, ' arrayvalue ', true);
代码是follofing:
类型Wet.csv.
测试= importdata ('wet.csv');
t = Test(:, 1);
h = Test(:, 2);
tt = max (t);
tr = min (t);
TTT = TR:4.0003 * 10 ^ -11:TT;
Hh = interp1(t, h, ttt);
图(2);
情节(t、h、“罗”);
持有;
情节(双塔,hh,‘g’);
一个= 0.3 * 10 ^ 10:10 ^十一10 ^ 9;
i = 1:长度(a)
J = 1:长度(TTT)
f = @(tau)hh(tau)*(2 /(3 ^(1/2)* pi ^(1/4))* exp( - (tau-ttt(j))/ a(i))^ 2/2)*(1 - ((tau-ttt(j))/ a(i))^ 2));
Q =积分(F负无穷到正无穷,“ArrayValued”,真正的);
K =(1 /((我)^(1/2)))*问;
S =真正的(K);
结束
结束
等高线(ttt, hh, a, S, 500)
非常感谢!!!
2的评论

登录评论。


destaw masresha.
destaw masresha. 2020年12月13日
编辑:沃尔特·罗伯森 2020年12月13日
a = sort(fc);
B = ((c *花+ 1):c * d);%selete的差异顶部n
subscript指数必须是真正的正整数或逻辑
谁能帮帮我??
1条评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年12月13日
c和d是什么?n是多少?
一世 推测 你构建了c和d,这样你 预计 C *d总是一个整数,但它不总是 完全 一个整数。例如,如果c是0.1:0.1:1,d是10,那么你可能 预计 c*d总是一个整数,但这将是假的:
格式长g
C = 0.1:0.1:1;
Mat2str(c)
ans ='[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]'
d = 10;
mat2str (c * d)
ans ='[1 2 3 4 5 6 7 8 9 10]'
Mat2str (c * d - (1:10))
ans ='[0 0 4.44089209850063E-16 0 0 0 0 0 0 0]'
c (3) - 0.3
ans =
5.55111512312578 e-17
教训:
  • 0.1不能用双精度精确地表示
  • 将一个“数学上”是分数的双精度数乘以某个“数学上”会返回整数的数……并不总是返回一个整数。0.3 * 10不等于3
  • 由冒号操作符上的小数增量计算的数字,例如第三个值0.1:0.1:1,并不总是与您期望的相应文字值完全相同。0.1+0.1+0.1不会给你0.3得到的相同的值

登录评论。


常见的费尔南多
常见的费尔南多 2021年4月5日
编辑:沃尔特·罗伯森 2021年4月5日
大家好,也许你们中有人能帮助我……一世tried to fix my problem with the solution above but it wasn`t possible.
为什么我收到以下错误消息:
subscript指数必须是真正的正整数或逻辑。
错误在threeDFT(第33行)
x = v((j-1:j + n0-2)* dt);
代码:
fs = 50 * 512;
dt = 1 / f;
N0 = fs / 50
达峰时间= 1;
j_max =最高温度* fs;
j = 1:j_max + 1
x = v((j-1:j + n0-2)* dt);
9日评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年4月7日
您之前发布的代码是三个月前;我认为自那个时间以来你已经开发了代码。

登录评论。


Neelu Pareek.
Neelu Pareek. 2021年7月11日
请有人帮助,因为我是第一次得到这个错误,尽管计算和使用伽玛函数在我的工作中许多次。
t = [0: .5:1];
η= 0.8;γ= 03;p =。9;π=。4;μ=综合σ= 7
S =μ+ ((((1 - p) * (pi) ^(μ))——(5 *(μ)^ 2 * (eta) ^(μ))——(μ*(σ)^(μ)))* (t。^(μ)/γ(μ+ 1)))
μ=
0.7500.
σ=
0.7000
subscript指数必须是真正的正整数或逻辑。
1条评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年7月11日
γ= 0。
不再是一个函数,而是一个标量。Gamma (mu+1)将是一个标量索引的尝试。

登录评论。


亚历山德拉罗克珊娜
亚历山德拉罗克珊娜 2021年7月18日
您好,我正在尝试使用有限差分法解决2d中的热方程。我还将k = 0变为k = 1,u(k + 1)到u(k),但仍然没有结果。初始化是否正确?
clc
清晰的所有
α= 2;
L = 50;
dx = 1;
dt = (dx ^ 2) /(4 *α);
Gamma =(alpha ^ dt)/(dx ^ 2);
itert = 1000;
u = 0 (itert, L, L);
uinit = 0;
utop = 100;
uleft = 0;
ubottom = 0;
uright = 0;
%边界条件
U(:,L-1,:)= UTOP;
u (:: 1) = uleft;
u (: 1, - 1) = ubottom;
u (:,:, l - 1) = uright;
k = 0:itert-1
我= 1:l - 1
j = 1: l - 1
U (k+1,i,j) = gamma*(U (k,i+1,j) + U (k,i-1,j) +......
U (k,i,j) + U (k,i,j) - 4* U (k,i,j)) + U (k,i,j);
结束
结束
结束
显示(u)
7评论

登录评论。

标签

还没有进入标签。

下载188bet金宝搏

社区寻宝

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

开始狩猎!