在零点交叉点翻转符号

2个视图(过去30天)
阿克拉姆sawai
阿克拉姆sawai 2020年10月3日
我有一个数组向量(信号)包含值1和0。例如数据集如下
data1 = [1,0,1,0,1,0,1,0,1,0];
我想反向符号(阶段)的值在零交叉点成为如下
Data1=[1, 0,-1, 0, 1, 0,-1, 1, 0]
你知道在大型数据集上有一种优雅的方法吗?
提前谢谢。

接受的答案

Stephen Cobeldick
Stephen Cobeldick 2020年10月3日
>> Data1 = [1,0,1,0,1,0,1,0]
Data1 =
1 0 1 0 1 0 1 0 0 0
>> data2 = data1。* cumprod([1,diff(diff(diam1 == 0)])
Data2 =
1 0 -1 0 1 0 0
4评论
弗拉基米尔•Sovkov
弗拉基米尔•Sovkov 2020年10月3日
在我的理解中,符号必须在每个零元素之间交替。因此,它必须在一个序列的奇数个零之后改变,但不能在偶数个零之后改变。它还没有实现。

登录发表评论。

答案(1)

弗拉基米尔•Sovkov
弗拉基米尔•Sovkov 2020年10月3日
Data1 = [1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0];
k =找到(~ Data1);
如果~ isempty (k)
如果k(结束)<元素个数(Data1)
结束k(+ 1) =元素个数(Data1) + 1;
结束
n = 1:2:numel(k)-1
Data1 (k (n) + 1: k (n + 1) 1) = 1;
结束
结束
disp (Data1);
2的评论

登录发表评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区可以如何帮助您!

开始狩猎!