Sostituzione NaN

di il
1 risposte

Sostituzione NaN

Sto apportando una modifica al mio editor in matlab. Mi spiego:

Ho una matrice quadrata:

i=242;
j=242;
r (raggio)=36300 (metri)
ogni cella della matrice è 300*300 (metri)

devo fare in modo che gli NaN all'esterno della circonferenza vengano sostituiti con -9999
mentre quelli all'interno della circonferenza siano sostituiti con 0.

io ho fatto in questo modo ma non mi sostituisce i valori

r=0:300:72600;

for i=1:242
for j=1:242
for j=1:(sqrt((r.^2)-(i.^2)))
if prova1(i,j,r)>36300
else
count = numel(prova1(~isnan(prova1(:))));


prova1(isnan(prova1)) = -9999;

end
end
end

(prova 1 è la matrice esempio)

Le allego un'immagine nel caso non mi fossi spiegato bene. le zone in rosso quindi con r > 36300 devono avere NaN= -9999 mentre quelle con r<36300 NaN=0

1 Risposte

  • Re: Sostituzione NaN

    Non capisco dove / come venga generata la matrice con i "NaN" tuttavia nello script in calce viene definita una circonferenza di raggio "r=36300"; quindi viene generata una matrice "R" che, inizialmente contiene i valori delle distanze dei punti dal centro.
    Successivamente i valori di "R <= r" vengono posti "=0" mentre i valori di "R > r" vengono posti "=-9999".
    
    
    % 
    % Generazione delle circonferenza
    % 
    t=0:.1:2*pi;
    r=36300;
    x=r*cos(t);
    y=r*sin(t);
    % 
    % Generazione della matrice che contiene le le distanze dal centro della
    % circonferenza
    % 
    x=-r:300:r;
    y=x;
    n=length(x);
    [X,Y]=meshgrid(x,x);
    % 
    % Calcolo distanza dal centro
    % 
    R=(X.^2+Y.^2).^.5;
    % 
    % Selezione dei punti interni / esterni alla circonferenza
    % 
    R(find(R <= r))=0;
    R(find(R ~= 0))=-9999;
    
    
    Hope this helps.
Devi accedere o registrarti per scrivere nel forum
1 risposte