функция, которая заменяет отрицательные числа массива 77 - PullRequest
0 голосов
/ 26 февраля 2019
function Z=replacez(A)
    [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

Это простая функция в MATLAB, которая заменяет отрицательные числа массива A на число 77. Может ли она быть реализована без циклов for, а с помощью функции find?

Пока я знаю, что find(A<0) возвращает массив с позициями отрицательных чисел массива A. Например, A=[1 , 0 , -3; -4 , 1 , -2], find(A<0) вернет ans=[3 ,4 , 6]

1 Ответ

0 голосов
/ 26 февраля 2019

Если по какой-то причине вам действительно нужно использовать find, я предложу, чтобы ваша функция была

function Z = replacez(A)
  Z = A;
  Z(find(Z<0)) = 77;
end

Но вам следует избегать этого.Действительно, согласно Matlab find:

Чтобы непосредственно найти элементы в X, которые удовлетворяют условию X<5, используйте X(X<5). Избегайте вызовов функций, таких как X(find(X<5)), которые без необходимости используют поиск в логической матрице.

find здесь избыточен, и вы можете сделать

function Z = replacez(A)
  Z = A;
  Z(Z<0) = 77;
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...