How to remove zeroes not defined by indices
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Suraj
el 5 de Nov. de 2020
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 comentarios
Respuesta aceptada
madhan ravi
el 5 de Nov. de 2020
Editada: madhan ravi
el 5 de Nov. de 2020
Wanted = zeros(numel(nonzeros(A)) + numel(B), 1);
Wanted(setdiff(1 : numel(Wanted), B)) = nonzeros(A)
3 comentarios
madhan ravi
el 6 de Nov. de 2020
Editada: madhan ravi
el 6 de Nov. de 2020
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
Más respuestas (0)
Ver también
Categorías
Más información sobre Multirate Signal Processing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!