MATLAB - 从向量中删除前导和尾随零

ned*_*orf 22 matlab vector strip

我有一个带有前导零和尾随零的小波函数.我想剥去小波之前或之后出现的所有零.但是,我不想删除小波本身内的任何零.为了简化,假设我有以下1x11向量:

0 0 0 -2 -1 0 -1 -2 0 0 0
Run Code Online (Sandbox Code Playgroud)

删除前导和尾随零后,向量应为:

-2 -1 0 -1 -2
Run Code Online (Sandbox Code Playgroud)

我的实际向量很大,性能是我最关心的问题.我是一名MATLAB新手,非常感谢有关如何尽可能高效地完成此任务的任何提示.

Pho*_*non 28

试试这个

 y = x(find(x,1,'first'):find(x,1,'last'));
Run Code Online (Sandbox Code Playgroud)

find(x,1,'option')命令为您提供第一个和最后一个非零索引.

  • 如果我想用矩阵做什么怎么办? (4认同)

Dim*_*ima 10

i1 = find(X, 1, 'first')
Run Code Online (Sandbox Code Playgroud)

将为您提供第一个非零元素的索引 X

i2 = find(X, 1, 'last') 
Run Code Online (Sandbox Code Playgroud)

会给你最后一个的索引.然后

X(i1:i2)
Run Code Online (Sandbox Code Playgroud)

将为您提供带有前导和尾随零的数组.