Matlab не могу разделить, используя / - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть какая-то простая функция, которая принимает значение

Это значение - проверенное число операторов if или elseif для вычисления другого значения.

Проблема, похоже, заключается в том, чтоошибка при попытке запуска, которая говорит

Ошибка при использовании / Размеры матрицы должны совпадать.

Ошибка в abc (строка 9) a = 5000 / г;

кодследующим образом

function abc(g)


if (g == 100)
   a = 1;
elseif (g <= 99 & g >= 50)    
   a = 200 -2*g;
elseif (g <= 50 & g >= 1)
   a = 5000 / g;
else
  warning('Invalid value passed, a defaults to 1');
  a =1;
end
end

Итак, я передаю в abc 100, и я ожидаю, что будет 1, но вместо этого он проходит через каждый if / elseif и выдает ошибку на = 5000 / g

Я должен также упомянуть, что я первоначально попытался использовать && в elseifs, но это также дало ошибку, которая сказала

Операнды к ||и операторы && должны быть преобразованы в логические скалярные значения.

Ошибка в abc (строка 6) elseif (g <= 99 && g> = 50)

Кто-нибудь знает, что здесь происходит?Спасибо

1 Ответ

4 голосов
/ 21 февраля 2012

Вы, вероятно, передаете матрицу своей функции, например, когда вы звоните

abc(yourdata)

yourdata на самом деле не одно число, а матрица. Если вы позвонили напрямую

abc(100)

Вы не должны видеть свою проблему (или нет?).

Другими словами, ваша главная проблема не в вашей функции , а при ее вызове!

Учитывая ваше описание, кажется, что вы установили yourdata(1) на значение 100, которое хотите проверить, но какой-то другой элемент матрицы имеет другое значение, поэтому конструкция if разветвляется в другой случай , Там вам нужно ./ вместо /, если вы хотите сделать поэлементное деление вместо матричное деление .

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

...