2016-06-17 8 views
1

Meine ursprüngliche Anordnung war A = [1 0 2 3 0 7]. Ich habe die Indizes mit einer Null in ihnen gelöscht und bekam A = [1 2 3 7]. Ich habe die Indizes der gelöschten Elemente in einem Array namens DEL = [2 5] gespeichert.Matlab: Wie lege ich Elemente in einem Array wieder ein?

Wie kann ich die Nullen wieder in das Array einfügen, um das ursprüngliche Array zurück zu bekommen?

Antwort

2

Dies wird es für Sie tun:

A = [1 2 3 7]; 
DEL = [2 5]; 

n = numel(A) + numel(DEL); 

B = zeros(1,n); 
mask = true(1,n); 
mask(DEL) = false; 
B(mask) = A; 

Alternativ können Sie die Maske in einer Zeile mit ein:

mask = setdiff(1:n, DEL); 

Ergebnis:

B = 

    1 0 2 3 0 7 
1
A = [1 0 2 3 0 7] ; 
A_ = [1 2 3 7] ; 
[~,i] = find (A) ; 
B = zeros (1,length(A)) ; 
B(i) = A_ ; 
1
A = [1 2 3 7]; 
DEL = [2 5]; 

array_indices = 1:6;  % the indices of the original array 
array_indices(DEL) = []; % indices of numbers that were not deleted 
B = zeros(1,6);   % created zeros of the same length as original array 
B(array_indices) = A;  % replace zeros with non-zero #s at their locations