为什么我得到的错误'下标索引必须是实数正整数或逻辑。”?
1,290次观看(过去30天)
显示旧的评论
为什么我得到以下错误消息:
错误:下标索引必须是实数正整数或逻辑整数。
接受的答案
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)
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”是用于虚数。
只是一个小提示!希望对大家有用。
0评论
法拉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])
结束
结束
结束
前任“老板”Pratyush Lohumi
2017年3月18日
编辑:沃尔特·罗伯森
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
2017年4月4日
编辑:沃尔特·罗伯森
2017年4月4日
为m = 1: num_pulse_int
更新传感器和目标位置
[sensorpos, sensorvel] = sensormotion(1 /脉冲重复频率);
[tgtpos, tgtvel] = tgtmotion(1 /脉冲重复频率);
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);
结束
惠灵顿佩雷拉古埃德
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维罗索
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)));
谢谢你的帮助!!
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);
谢谢你的帮助!
0评论
米格尔·安赫尔·古兹曼·德拉克鲁兹
2019年10月7日
我如何在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月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
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)
非常感谢!!
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)
d = 10;
mat2str (c * d)
Mat2str (c * d - (1:10))
c (3) - 0.3
教训:
- 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);
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)