MATLAB数组索引错误:位置 1 处的索引无效

在MATLAB中,如果遇到'位置 1 处的索引无效。数组索引必须为正整数或逻辑值。'错误,通常是因为代码试图访问数组中不存在的元素。

问题描述

考虑以下场景:您正在使用 heatmap 函数,并在执行以下代码行时遇到错误:

heatmap(y_index, x_index) = heatmap(y_index, x_index) + 1;

错误提示为:

出错 hotpoint (第 25 行)
    heatmap(y_index, x_index) = heatmap(y_index, x_index) + 1;
 
Caught 'std::exception' Exception message is:
Invalid character code sequence detected.

问题原因

这个错误提示表明 y_indexx_index 的值不是有效的正整数,导致索引无效。这可能是因为:

  • 坐标数据中存在非正整数的值。
  • 计算得到的 y_indexx_index 不是整数。

解决方法

为了解决这个问题,您可以尝试以下方法:

  1. 检查索引值: 确保 y_indexx_index 的值是有效的正整数。您可以使用 disp() 函数打印这些值,并在出现错误之前检查它们的值。

  2. 使用 ceil() 函数: 使用 ceil() 函数将计算得到的索引值向上取整为最接近的整数。

  3. 确保索引为正整数: 在使用索引之前,检查它们是否小于等于0。

  4. 使用 round() 函数: 使用 round() 函数将计算得到的索引值四舍五入为最接近的整数值,以确保索引为有效的正整数。

以下代码示例展示了如何应用这些方法:

x_index = ceil((x(i) - min(x)) / cell_size);
y_index = ceil((y(i) - min(y)) / cell_size);

% 确保索引为正整数
if x_index <= 0 || y_index <= 0
    continue;
end

% 将索引四舍五入为最接近的整数值
x_index = round(x_index);
y_index = round(y_index);

heatmap(y_index, x_index) = heatmap(y_index, x_index) + 1;

通过添加这些代码,我们首先使用 ceil() 函数确保 x_indexy_index 为整数。然后,我们检查索引是否小于等于0,如果是,则跳过此次循环。最后,我们使用 round() 函数将索引四舍五入为最接近的整数值,以确保索引为有效的正整数。

请尝试运行修改后的代码,并查看是否仍然出现报错。如果问题仍然存在,还请提供更多关于数据和报错的细节,以便我们能够进一步帮助您解决问题。

MATLAB数组索引错误:位置 1 处的索引无效

原文地址: https://www.cveoy.top/t/topic/Ily 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录