Ayuda con Octave

zildjian

Hi there folks! Tengo una dudilla de octave, que es la siguiente. Me dan el siguiente código:

function Z = replacez(A)
%REPLACEZ Function that replaces the negative elements
% of a matrix with the number 77
% usage:
% Z = replacez(A)
% A = input matrix whose negative elements are to
% be replaced with 77
%
[M,N] = size(A);
for i=1:M
    for j=1:N
        if A(i,j) < 0
            Z(i,j) = 77;
        else
            Z(i,j) = A(i,j);
        end
    end
end

Y me dicen que haga lo mismo, pero sin utilizar los for. Me dan la pista y que es la siguiente:

A = A .* (A>0)

que coje una matriz A y transforma en 0 todos los elementos negativos de la matriz. Mi duda es, ¿cómo lo reutilizo para hacerlo 77? :(

Saludos y gracias.

bLaKnI

Yo haria algo como

suponte que tienes la matriz M con elementos positivos y negativos ok?

Pues hago esto:

a = sign(A);
b = find(a < 0);
M(b) = 77;

creo que esto deberia bastar...
Pero no lo se, te lo digo de cabeza...

De hecho, te puedes saltar el sign...

a = find(M < 0);
M(a) = 77;

zildjian

Gracias, funciona a la perfección #2

bLaKnI

^^

Usuarios habituales

  • bLaKnI
  • zildjian