微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MATLAB:从数组中删除特定元素

如何解决MATLAB:从数组中删除特定元素

问题 1: 我有一个 1x15 的数组,由正整数和负整数组成。我希望实现一个 MATLAB 代码,该代码保留所有正整数并跳过内容为负的单元格。

我尝试了以下方法

X = [1 2 3 4 5 -10 1 -5 4 6 8 9 2 4 -2];
[r c] = size(X);
for i=1:r
    for j=1:c
        if X(i,j)<0
            X(i,j)=X(i,j+1)
        end
    end
end

输出应该是:

X_new = [1 2 3 4 5 1 4 6 8 9 2 4]

我该怎么做?


问题 2:

X = [1 2 3 4 5 -10 1 -5 4 6 8 9 2 4 -2]
Y = [5 3 8 9 4  5 6  7 4 7 9 5 2 1  4]

来自问题 1,

X_new = [1 2 3 4 5 1 4 6 8 9 2 4]

我需要删除 Y 中的相应值,以便:

Y_new = [5 3 8 9 4 6 4 7 9 5 2 1]

我该如何执行此操作?

解决方法

在 MATLAB 中,操作数组和矩阵比 for 循环解决方案容易得多, 在你的任务中,可以做查找和删除数组中的负值,简单来说,如下:

Idx_neg = X < 0;  % finding X indices corresponding to negative elements
X ( Idx_neg   ) = [];  % removing elements using [] operator

Y ( Idx_neg  ) = [];   % removing corresponding elements in Y array

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。