2015-03-01 6 views
0

Я не могу написать функцию для генерации матрицы. Я продолжаю получать ошибку «Недостаточно входных аргументов» при попытке запуска:Не удается получить функцию для работы

функция B = generate_matrix (n) B = нули (n, n); % Я добавлю дополнительную информацию к функции, как только я смогу заставить ее работать конец

Кто-нибудь знает, что я делаю неправильно? Я уже проверил онлайн и не знаю, что я делаю неправильно.

+0

До тех пор, пока вы вызываете 'B = generate_matrix (m)' с 'm', определенным или использующим целочисленный литерал, например' B = generate_matrix (7) ', он должен работать. Является ли функция в вашем текущем рабочем каталоге? – TroyHaskin

ответ

0

Запись файла для функции

function B = generate_matrix(n) B = zeros(n,n); end

затем, в окне командной строки,

B = generate_matrix(3)

это должно генерировать 3x3 нулевую матрицу. Я думаю, что ваш код работает.

+0

Это не работает для меня. У меня есть точный код выше в файле .m, но каждый раз, когда я нажимаю run, я получаю сообщение об ошибке «Недостаточно входных аргументов». Есть ли способ, которым я должен загружать function в командном окне? Извините за немой вопрос. Я действительно новичок в MATLAB. – migs

+0

@migs: это .m-файл с именем 'generate_matrix.m'? Правильно ли установлен ваш текущий путь? (вы можете проверить это по праву щелкнув вкладку файла функций в редакторе, а затем нажав «Изменить текущую папку на ...»). –

0

Убедитесь, что ваш ввод вводит переменную n. Если n равно null, вы получите эту ошибку. В командном окне сначала присвойте значение n. Скажите n = 5. Затем запустите свою программу. Поскольку n уже имеет значение, ваша программа будет работать нормально.

+0

Дело в том, что я хочу иметь возможность вызвать функцию для произвольного n. Точно так же вы можете написать A = нули (100) B = единицы (6) и C = нули (7) в окне команд. – migs

+0

, так как 'n' - это вход для функции generate_matrix, для функции должна быть определена' n'. –

+0

Что я в основном хочу сделать, это написать функцию, а затем запустить мою программу и использовать эту функцию из окна команд - как в Python. Возможно ли это? Я чувствую, что если n должно быть фактическим фиксированным числом, то это не совсем то, что я хочу – migs

1

Сообщение об ошибке у вас есть нормально.

Вы определили функцию, которая требует один вход:

function B = generate_matrix(n) 

B = zeros(n,n); 

При нажатии на кнопку Run (или F5), Matlab пытается выполнить код. Или Matlab не знает, что такое n, поэтому сообщение об ошибке. Фактически, кнопка Runтолько работает для скриптов или функций без ввода.

Таким образом, чтобы использовать функцию, которую вы должны вызова он (например из рабочего пространства) и указать аргумент:

>> generate_matrix(3) 
ans = 

    0  0  0 
    0  0  0 
    0  0  0 

Обратите внимание, что этот аргумент может быть переменным, которая была ранее определена ,

Смежные вопросы