Matlab - не могу вызвать функцию, потому что она говорит, что я пытаюсь выполнить скрипт - PullRequest
0 голосов
/ 15 марта 2012

В Matlab я определил функцию iReadImage, которая выглядит следующим образом:

function [outimag] = iReadImage (imaurl)

{code}

Я использовал ее часамии все, казалось, работало нормально, но потом я изменил одну строку, и вдруг она перестала работать, даже после того, как я удалил эту строку, ничего не получалось.Он всегда говорит мне:

Попытка выполнить SCRIPT iReadImage как функцию:

/ home /.../ iReadImage.m

Когда я смотрю на файл, он говоритчто это 0kB .... Понятия не имею, почему, я попробовал все, скопировал функцию в новую функцию, перезагрузил компьютер, даже попробовал его на других ПК.Два или три раза это сработало снова, но ненадолго, пока я не получил одно и то же сообщение об ошибке.

Ответы [ 3 ]

0 голосов
/ 15 марта 2012

Я предполагаю, что у вас есть несколько файлов iReadImage в каталогах, где matlab ищет скрипты и функции. Если это так, то похоже, что Matlab нашел неправильный (возможно, с ошибкой в ​​нем?) И пытается выполнить его.

Убедитесь, что у вас есть только одна копия файла (проверьте, какие каталоги Matlab ищет в path).

Чтобы узнать, из какого каталога Matlab будет выполнять вашу функцию, напишите which <filename>, то есть в вашем случае which iReadImage и убедитесь, что используется правильный файл.

Вы также можете использовать which iReadImage -all, чтобы найти все файлы iReadImage.

0 голосов
/ 15 марта 2012

Matlab очень внимательно относится к тому, как его функции могут быть построены.Файл functionname.m должен начинаться с первой строки function [output] = functionname (input).В противном случае он будет предполагать, что имеет дело со сценарием, а не с функцией.Кроме того, если ваш файл является функцией, вы можете объявить внутри нее, например:

function y = f(x)

    y = g(x) + 2;   

    function z = g(x)
    z = x.^2;
    end

end

Однако, если ваш файл является скриптом, Matlab не разрешает такие объявления функций.Один из способов проверить это состоит в том, чтобы тривиально превратить существующий скрипт в функцию (обернув его функцией с нулевым вводом и выводом), и посмотреть, не возникает ли у него такая же ошибка.

0 голосов
/ 15 марта 2012

Возможно, проблема в том, что вы изменили свой рабочий каталог (например, cd). Вы можете запускать только функции, которые находятся в текущем рабочем каталоге или в каталогах, перечисленных в path .

Для подтверждения введите which iReadImage.

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