Что пути состоят в том, чтобы суммировать элементы матрицы в MATLAB?

Плавающие точки имеют неожиданные иррациональные числа.

, Например, Вы не можете сохранить 1/3 как десятичное число, это было бы 0.3333333333... (и так далее)

, Плавания на самом деле хранятся как двоичное значение и питание 2 экспонент.

Так 1.5 хранится, поскольку 3 x 2 к-1 (или 3/2)

Используя эти показатели основания 2 создают некоторые нечетные иррациональные числа, например:

Преобразовывают 1.1 в плавание и затем преобразовывают его назад снова, Ваш результат будет чем-то как: 1.0999999999989

Это вызвано тем, что двоичное представление 1,1 является на самом деле 154811237190861 x 2^-47, больше, чем двойное может обработать.

[еще 119] об этой проблеме о мой блог , но в основном, для устройства хранения данных, Вы более обеспечены с десятичными числами.

На Microsoft SQL server Вы имеете money тип данных - это является обычно лучшим для финансового устройства хранения данных. Это с точностью до 4 десятичных разрядов.

Для вычислений у Вас есть больше проблемы - погрешность является крошечной частью, но поместила ее в функцию питания, и это быстро становится значительным.

Однако десятичные числа не очень хороши ни для какого вида математики - нет никакой собственной поддержки десятичных полномочий, например.

12
задан gnovice 7 May 2017 в 03:32
поделиться

2 ответа

1)

total = 0;
for i=1:size(A,1)
  for j=1:size(A,2)
    total = total + A(i,j);
  end
end

2)

total = sum(A(:));
18
ответ дан 2 December 2019 в 02:55
поделиться

Другой ответ на первый вопрос - использовать один для цикла и выполнить линейный индексация в массив с помощью функции NUMEL для получения общего количества элементов:

total = 0;
for i = 1:numel(A)
  total = total+A(i);
end
10
ответ дан 2 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

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