2017-01-12 3 views
0

Я написал эту простую функцию Matlab:странный «Индекс превышает размеры матрицы». MATLAB ошибка

function [A] = tries (a, b, c, d) 
    global S CdM AdA 
    D = @(Z, Vx, Vy, Vz) 0.5*S*(Vx.^2 + Vy.^2 + Vz.^2)*CdM(sqrt(Vx.^2 + Vy.^2 + Vz.^2))*AdA(Z); 
    A = D(a, b, c, d); 
end 

, но я получаю эту ошибку: «Индекс превышает размеры матрицы» и это говорит о том, что ошибка в строке 3.

Когда я помещаю тот же текст в основную функцию (а не в отдельную), он отлично работает. Что-нибудь в виду, какая проблема может быть?

+0

Попробуйте использовать [отладчик] (https://se.mathworks.com/help/matlab/debugging-code.html), и установить точку останова в строке 3. –

+0

с какими параметрами вы звоните ' tries'? – DVarga

ответ

0

Единственный элемент с индексом в строке 3 является

AdA(Z) 

, что чтение функции должна быть равна AdA(a). Поэтому Z бесполезен.

D2 = @(Vx, Vy, Vz) 0.5*S*(Vx.^2 + Vy.^2 + Vz.^2)*CdM(sqrt(Vx.^2 + Vy.^2 + Vz.^2)); 
A = D2(b, c, d)*AdA(a); 

но, игнорируя то, что AdA и где Z (что равно а) приходит, попытайтесь заставить вашу функцию, чтобы отобразить размеры, чтобы увидеть, если они совпадают, когда функция вызывается.

disp(size(AdA)); 
disp(a); 
Смежные вопросы