Le risposte date sono tutti corretti. Volevo solo elaborare il commento gnovice's sul test in virgola mobile.
Quando si confrontano i numeri in virgola mobile per l'uguaglianza, è necessario utilizzare un valore di tolleranza. Vengono comunemente utilizzati due tipi di confronti di tolleranza: tolleranza assoluta e tolleranza relativa. (source)
Un paragone tolleranza assoluta di a
e b
assomiglia:
|a-b| < tol
Un confronto relativa tolleranza assomiglia:
|a-b| < tol*max(|a|,|b|) + tol_floor
È possibile implementare queste due funzioni anonime:
%# absolute tolerance equality
isequalAbs = @(x,y,tol) (abs(x-y) <= tol);
%# relative tolerance equality
isequalRel = @(x,y,tol) (abs(x-y) <= (tol*max(abs(x),abs(y)) + eps));
Quindi è possibile utilizzarli come:
%# let x and y be scalars/vectors/matrices of same size
x == y
isequalAbs(x, y, 1e-6)
isequalRel(x, y, 1e-6)
Sempre, sempre possibile vectorizzare il codice MATLAB quando possibile. – Doresoom
Dovrebbe essere spostato su http://math.stackexchange.com/? – aaronsnoswell