How to remove zeroes not defined by indices
2 次查看(过去 30 天)
显示 更早的评论
Hello All,
I have a large signal data file (about 3000000x1 double) and I first ran these values under a defined signal range and replaced the non conforming values to zero.
However, some of the values of the original data also contain zeroes for which I have the corresponding indices.
- How do I remove the other zeroes from the data but keep the zeroes corresponding to the indices?
Eg: 1. A = [ 1 2 0 0 3 0 4 0 5 6 0 9] -> Data
B = [3,6,8] -> Indices corresponding to the zeroes in A
Expected Output: [1 2 0 3 0 4 0 5 6 9]
Below is a code snippet for this logic that I tried but without success.
%Thr = Measured Data Signal (Appox. 3000000 x 1 double)
%idx = Indices for zeros to be retained in data signal
Thr2 = zeros(size(Thr));
Thr3 = Thr;
for k = 1:numel(idx)
Thr2(idx(k)) = idx(k);
end
for k1 = 1:numel(Thr)
if((Thr(k1)== 0)&&(k ~= Thr2(k)))
Thr3(k1) = [];
else
Thr3(k1) = Thr3(k1);
end
end
Any help would be appreciated.
Cheers!
2 个评论
采纳的回答
madhan ravi
2020-11-5
编辑:madhan ravi
2020-11-5
Wanted = zeros(numel(nonzeros(A)) + numel(B), 1);
Wanted(setdiff(1 : numel(Wanted), B)) = nonzeros(A)
3 个评论
madhan ravi
2020-11-6
编辑:madhan ravi
2020-11-6
My two options give you the desired answer, take the time and respond.
output = A;
output(B) = nan;
output = nonzeros(output);
output(isnan(output)) = 0
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multirate Signal Processing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!