2014-02-17 3 views
1

Мой файл не работает, и я понятия не имею, почему. При запуске у = испытании (а, х) после того, как delcare:MATLAB вводит это не двойная ошибка

А = этаж (Rand (8100));

x = пол (rand (100,1));

Я получаю неопределенную функцию «тест» для входных аргументов типа «двойной».

function [ output_args ] = untitled2(~) 
    function y = test(A, x) 
    %This function computes the pro 
    duct of matrix A by 
    vector x row-wise 
    % define m number of rows here to feed into for loop 
    [ma,na] = size(A); 
    [mx,nx] = size(x); 
    % use if statement to check for proper dimensions 
    if(na == mx && nx == 1) 
    y = zeros(ma,1); % initialize y vector for n = 1:ma 
    y(n) = A(n,:)*x; 
    %end 
    else 
    disp('Dimensions of matrices do not match') 
    y = []; 
    end 
    end 
    end 
+3

Вы не можете позвонить вложенную функцию из окна командной строки, только функции верхнего уровня. –

+0

Итак, как я могу это исправить? Я новичок в этом типе языка – KnowledgeGeek

ответ

3

Как Бен Voigt правильно сказал вам в комментарий Ваша проблема в том, что тест определяется внутри untitled2.

Для кода, который вы отправили, нет необходимости делать такую ​​вещь, поэтому вы можете решить, просто объявив тест без внешнего untitled2. Так просто создать файл test.m просто использовать эту часть кода

function y = test(A, x) 
    %This function computes the product of matrix A by vector x row-wise 
    % define m number of rows here to feed into for loop 
    [ma,na] = size(A); 
    [mx,nx] = size(x); 
    % use if statement to check for proper dimensions 
    if(na == mx && nx == 1) 
     y = zeros(ma,1); % initialize y vector 
     for n = 1:ma 
      y(n) = A(n,:)*x; 
     end 
    else 
     disp('Dimensions of matrices do not match') 
     y = []; 
    end 
end 

А затем вызовите функцию снова

+0

Итак, я делаю это, и он говорит, строка 4: недостаточно аргументов строки ввода. – KnowledgeGeek

+0

Одна часть вашего кода находилась внутри строки комментария. Я исправил его в приведенном выше коде. Попробуйте скопировать пасту и сделать это снова. – cifz

+0

Хорошо, теперь, когда я запускаю его, я получаю. Ошибка в mfile (строка 11) y (n) = A (n,:) * x; – KnowledgeGeek

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