【发布时间】:2018-02-19 15:08:32
【问题描述】:
我有一个简单的问题,我正在尝试替换 1x60000 数组中的值。
这是我的代码,其中Z 是 1x60000 数组:
for i = 1:length(Z)
if Z(i) == 140
Z(i) = 1;
elseif Z(i) == 83
Z(i) = 2;
elseif Z(i) == 52
Z(i) = 3;
elseif Z(i) == 36
Z(i) = 4;
elseif Z(i) == 28
Z(i) = 5;
elseif Z(i) == 23
Z(i) = 6;
elseif Z(i) == 125
Z(i) = -1;
else
Z = Z(i);
end
end
数组中的最大值是 140。但是,当我运行代码时,我收到此错误:
索引超出矩阵维度。
任何帮助将不胜感激。
【问题讨论】:
-
这行肯定会产生错误 Z = Z(i);因为您在左侧没有任何索引
-
^ ??????̶????̶????̶??????̶????̶????̶????̶????̶当然.如果您想在不满足任何条件的情况下保持值不变,只需删除 else 部分。如果您要替换的值与您要替换的值不同,您可以摆脱循环和 if 条件:
Z(Z== 140)=1;Z(Z== 83)=2等等... -
@SardarUsama 或 use
ismember你甚至不需要所有单独的索引条件;)
标签: matlab loops for-loop if-statement