如何在matlab中切断数组?

时间:2017-03-08 10:44:22

标签: matlab

我正在尝试删除数组结尾的n%开头和m%,但我不知道该怎么做。你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

我们假设我们正在处理80个元素的向量 A

A = 1:80;
N = numel(A);
n = 0.1; m = 0.15;

如果我们只想从开头和结尾删除一定数量(或百分比)的元素,我们可以采取几种方法:

  • 为子集编制索引(建议Ander):

    A1 = A(round(n*N):end-round(m*N));
    

    其中end指定数组特定维度中的最后一个元素。

  • 通过分配[]

    来删除元素
    A1 = A; A1(1:round(n*N)-1) = []; A1(end-round(m*N)+1:end) = []; 
    

在某些情况下,您希望删除的元素不是根据它们在向量中的位置,而是根据它们的值(或百分位数),在这种情况下您可以这样做:

p = prctile(A(:),[n m]*100);   % Returns percentiles p of a data set.
A1 = A(A >= p(1) & A <= p(2));