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

1,290次观看(过去30天)
为什么我得到以下错误消息:
错误:下标索引必须是实数正整数或逻辑整数。

接受的答案

MathWorks支持团队
MathWorks支持团队 2021年2月17日
编辑:MathWorks支持团队 2021年2月17日
当试图使用非正整数或逻辑值的下标向数组进行索引时,会发生此错误。下面是一些关于导致此错误消息的常见情况的提示:
1)再次检查索引是否为正整数。MATLAB中的索引不能为0,默认情况下从1开始。
2)如果你使用逻辑索引到一个数组中,请确保你的索引数组是“逻辑”类型的,而不是由1和0组成的“双”数组。在尝试使用逻辑索引之前,可以将'double'数组转换为逻辑数组。例如:
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'函数来检查它的数据类型:
印第安纳州
3)如果使用浮点算法计算索引数组,那么数组值可能不是精确整数。当您知道您的索引值接近您想要的整数索引时,'round'函数非常方便。例如,
A = [1 2 3 4;5 6 7 8];
ind_float = 2.00001;
ind_int =圆(ind_float);
(ind_float)
下面是一种检查索引数组'ind'是否包含精确整数值的方法。该命令返回一个“逻辑”数组,其中1表示索引值是一个精确整数,0表示不是。
印第安纳州= =圆(印第安纳州)
4)如果你将一个变量赋给与MATLAB中内置函数相同的名称,那么你将覆盖该函数,并在尝试调用它时遇到错误。例如,
max =兰德(5);
一个=兰德(5);
max ()
在这种情况下,重命名你的变量并清除旧的变量继续:
B = max;
清晰的马克斯·马克斯(A)
有关MATLAB中索引的更多信息,请参见以下文档页面:
6个评论
沃尔特·罗伯森
沃尔特·罗伯森 2018年9月25日
“这在最近的Matlab更新中有所改变吗?”(我从2013年更新到2017年)。在此之前,我从来不用从double转换为逻辑。”
R2013a:
A=rand(1,3), A([1 0 0])
一个=
0.8147 0.9058 0.1270
下标索引必须是实数正整数或逻辑。
R2010bSP1也是一样,它是我现在安装的最老的MATLAB。
如果我们检查R14文档, //www.ru-cchi.com/help/releases/R14/techdoc/matlab.html 在“特殊字符[](){}= ' . ... .,;: % !@”我们明白了,
V的组成部分必须是用作下标的整数。如果任何这样的下标小于1或大于x的大小,就会发生错误。"
这不是一个新的限制,不,在MATLAB中没有任何设置可以改变这一点。

登录发表评论。

更多的答案(20)

安东尼Pichot
安东尼Pichot 2015年11月19日
Iaredi Sabinas的评论应该是一个有效的回答。
当你有一个以已有的matlab函数命名的变量,比如min或diff时,就可能发生这种情况。matlab认为你在使用这个变量而不是内置函数。
1评论
Stephen23
Stephen23 2015年11月19日
编辑:Stephen23 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日
这个怎么样。有星星的话…我如何声明..如果我运行这个程序它得到错误..thnx很多
我= 0:1:maxrow-1
j = 0:1: maxcol-1
% inv([i, j]) = 255 - image([i, j]);
K = 0: 1
*sto([i, j, k]) = image([i, j])
结束
结束
结束
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2016年4月22日
MATLAB索引从1开始,而不是0。你需要给所有的指标加1。
还要记住,sto([i, j, k])是在3个位置索引sto, sto(i), sto(j), sto(k)。它不是一个三维数组的下标那应该是sto(i, j, k)

登录发表评论。


前任“老板”Pratyush Lohumi
编辑:沃尔特·罗伯森 2017年3月18日
n = 0: ns
(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日
编辑:沃尔特·罗伯森 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 *δ);
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日
让我们匹配括号。该数字将是对齐的字符“之后”的开括号的数量:
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(IND(t,1),IND(t,2))必须是非零整数D(IND(t,1),IND(t,2))的精确整数倍。这个条件不是 不可能的 ,但我倾向于怀疑这一点。

登录发表评论。


Yago维罗索
Yago维罗索 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, aet, 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]= prop_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.
如果运行以下脚本,则会得到相同的错误消息。这个脚本是用来用特征的方法来解决一个问题的。
l = 1;
d = 0.01;
ρ= 1000;
f = 0.1;
= 1;
p0 = 2 e3;
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 =风险;
结束
瓣膜(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。


哈姆扎赛义德汗
哈姆扎赛义德汗 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)”
网格
巴基斯坦人,哈哈哈

米格尔·安赫尔·古兹曼·德拉克鲁兹
我如何在for循环中添加一个以负数开头的范围?
类似的东西
因为我= 10000:100:10000
delta_g(我,1)= ((4 * R1 ^ 3 * sp * G) / 3) * (z1 / (z1 ^ ^ 2 + 2) ^ (3/2));
结束
Salu2


索非亚桑托斯
索非亚桑托斯 2020年5月8日
你好,我尝试使用round()并将双转换为逻辑,但当我键入“whoos最大值”或“whoos最小值”时,没有显示。我想用最小值的时间和最大值的时间来计算上升时间。
你能看看我的代码,看看能不能帮上忙吗?非常感谢!!
data_org = importdata(西奈半岛,' \ t '7);含有7列的%文本文件
EDA = data_org.data;
EDA = EDA (:, 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评论
索非亚桑托斯
索非亚桑托斯 2020年5月8日
我没有在函数的上下文中执行这个。这个想法是创建一个脚本,读取每个文本文件的六列,然后过滤信号,得到振幅和时间上升。但是我很难找到对应的t。

登录发表评论。


海鹰队
海鹰队 2020年5月27日
编辑:沃尔特·罗伯森 2020年5月27日
请帮我解决一个函数的均值,我有错误:
下标索引必须是实数正整数或符合逻辑的。
Chanprojectpart32中的错误(第36行)
E (Zr) =意味着(Zr);
=====================
j = 1: n - 1
s1 = 0;
s2 = 0;
k = 1:没有+ 1
φ=(π-(-π))* rand-pi;%φk
颗= Fd。* (cos((2 *π* 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(子)=意味着(子);

Viktoriia Buliuk
Viktoriia Buliuk 2020年8月3日
你好!我尝试执行从.csv文件获得的数据的转换。你能帮帮我吗?我有以下错误:
下标索引必须是实数正整数或逻辑整数。
错误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] = iterateArrayValued (u tinterval pathlen);
integralCalc中的错误(第103行)
[q, errbnd] = vadapt (@minusInfToInfInvTransform间隔);
积分误差(第88行)
Q = integralCalc(有趣,a, b, opstruct);
walvet中的错误(第26行)
Q = integral(F,-Inf,Inf, ' arrayvalue ', true);
代码如下:
类型wet.csv
测试= importdata (“wet.csv”);
t = Test(:, 1);
h = Test(:, 2);
tt = max (t);
tr = min (t);
到达目标时间= 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 = @(τ)hh(τ)*(2 /(3 ^ ^(1/2)*π(1/4))* exp (- ((tau-ttt (j)) / (i)) ^ 2/2) * (1 - ((tau-ttt (j)) / (i)) ^ 2));
Q =积分(F负无穷到正无穷,“ArrayValued”,真正的);
K =(1 /((我)^(1/2)))*问;
S =真正的(K);
结束
结束
等值线(ttt, hh, a, S, 500)
非常感谢!!
2的评论

登录发表评论。


Destaw Masresha
Destaw Masresha 2020年12月13日
编辑:Destaw Masresha 2020年12月13日
一种= (fc);
B = ((c *花+ 1):c * d);%选择方差的前n
下标索引必须是实数正整数或逻辑整数
请任何人都能帮助我…??
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年12月13日
编辑:沃尔特·罗伯森 2021年4月5日
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 00 00 00 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.
为什么我得到以下错误消息:
下标索引必须是实数正整数或逻辑整数。
三个edft中的错误(第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
下标索引必须是实数正整数或逻辑整数。

亚历山德拉罗克珊娜
亚历山德拉罗克珊娜 2021年7月18日
大家好,我想用有限差分法解二维热方程。我还将k=0更改为k=1,将u(k+1)更改为u(k),但仍然没有结果。初始化是否正确?
clc
清晰的所有
α= 2;
L = 50;
dx = 1;
dt = (dx ^ 2) /(4 *α);
γ=(α^ 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) = *(U (k,i+1,j) + U (k,i-1,j) +...
U (k,i,j+1) + U (k,i,j-1) - 4* U (k,i,j)) + U (k,i,j);
结束
结束
结束
显示(u)
7评论

登录发表评论。

标签

没有标签输入。

2022世界杯八强谁会赢?

世界杯预选赛小组名单社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!世界杯预选赛小组名单

开始狩猎!

Baidu
map