Оператор Matlab не внутри какой-либо ошибки функции - PullRequest
0 голосов
/ 13 ноября 2018

Это простой код Matlab, который я пытаюсь выполнить.

function result = scale(img, value)
    result = value .* img;
end

dolphin = imread('dolphin.png')
imshow(scale(dolphin, 1.5));

Ошибка говорит:

Error: File: scale.m Line: 5 Column: 1 This statement is not inside any function. (It follows the END that terminates the definition of the function "scale".)

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 13 ноября 2018

scale.m - это M-файл функции, поскольку он начинается с ключевого слова function.Часть до end является определением функции.Когда вы вызываете scale в командной строке MATLAB, он выполняет код в функции.Материал, следующий за end, не является частью функции и, следовательно, не может быть выполнен.

Если вы намеревались написать сценарий с закрытой функцией scale, которую хотите использовать только в этом сценарии, затем поместите строки кода, которые читают и отображают dolphin в верхней части файла.Закрытые функции должны идти после части скрипта.Этот синтаксис поддерживается , поскольку MATLAB R2016b .

В противном случае переместите код dolphin в другой M-файл, который будет M-файлом простого сценария без каких-либо определений функций.Этот сценарий может затем использовать scale, который вызовет функцию в файле scale.m.

Третья альтернатива, сохраняющая весь код в одном файле, состоит в том, чтобы вообще не использовать сценарий, и поместитькод сценария внутри функции:

function f % just a random name
   dolphin = imread('dolphin.png')
   imshow(scale(dolphin, 1.5));
end

function result = scale(img, value)
   result = value .* img;
end

(имя функции не обязательно должно совпадать с именем файла, хотя редактор MATLAB предупредит вас, если эти имена не совпадают.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...