matlab索引超出矩阵维度

img

img


matlab索引超出矩阵维度。
这怎么回事呢,想把结构体中LineNode(i).x=0的那一行删除,结构体一共4296行

这可能是因为您的结构体中的LineNode(i)的x属性的值超出了矩阵的维度。在这种情况下,您可以尝试将LineNode(i)的x属性的值限制为0,例如:LineNode(i).x = 0;这将删除LineNode(i)的x属性的值为0的行。请注意,这将影响所有LineNode(i)的x属性的值,因此请确保只删除您需要的行。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    答案:

    要实现这个任务,可以使用循环结构遍历LineNode结构体的所有行,并根据每行的x值进行条件筛选。筛选满足条件的行后,用matlab的删除行操作函数将这些行从结构体中移除即可。

    具体代码实现如下所示:

    % 生成测试结构体LineNode
    LineNode = struct('x', num2cell(randi([-2, 2], [4296, 1])), 'y', num2cell(randi([-2, 2], [4296, 1])));
    
    % 遍历结构体,找到x=0的行
    to_del = [];
    for i = 1:length(LineNode)
        if LineNode(i).x == 0
            to_del = [to_del, i];
        end
    end
    
    % 删除x=0的行
    LineNode(to_del) = [];
    

    上述代码首先生成了一个测试用的LineNode结构体,包含4296行随机值。然后使用循环遍历每一行,将x值为0的行的行号记录到了一个数组to_del中。最后使用matlab中的删除行操作,将to_del数组中的所有行从结构体中删除。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^