Как я могу применить функцию к каждой строке / столбцу матрицы в MATLAB?

Вот простой способ сделать это:

<form onsubmit="return checkBeforeSubmit()">
  some input:<input type="text">
  <input type="submit" value="submit" />
</form>

<script type="text/javascript">
  var wasSubmitted = false;    
    function checkBeforeSubmit(){
      if(!wasSubmitted) {
        wasSubmitted = true;
        return wasSubmitted;
      }
      return false;
    }    
</script>
100
задан gnovice 5 May 2017 в 05:24
поделиться

1 ответ

Многие встроенные операции, такие как sum и prod , уже могут работать со строками или столбцами, поэтому вы можете провести рефакторинг применяемой функции, чтобы воспользоваться ее преимуществами. это.

Если это не жизнеспособный вариант, один из способов сделать это - собрать строки или столбцы в ячейки с помощью mat2cell или num2cell , а затем использовать cellfun для работы с результирующим массивом ячеек.

В качестве примера предположим, что вы хотите просуммировать столбцы матрицы M . Вы можете сделать это, просто используя sum :

M = magic(10);           %# A 10-by-10 matrix
columnSums = sum(M, 1);  %# A 1-by-10 vector of sums for each column

А вот как это сделать, используя более сложную опцию num2cell / cellfun :

M = magic(10);                  %# A 10-by-10 matrix
C = num2cell(M, 1);             %# Collect the columns into cells
columnSums = cellfun(@sum, C);  %# A 1-by-10 vector of sums for each cell
69
ответ дан 24 November 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: