Saying Else is invalid syntax
16 次查看(过去 30 天)
显示 更早的评论
So, I'm writing a function to calculate the dot product in various ways and then find the angle between 2 vectors.
However, I keep getting a parse invalid syntax error for my first else statment.
Here is the code:
It is the most bottomest else that is getting the error.
function [d1,d2,d] = dotangle(u,v)
m = length(u);
n = length(v);
if isequal(uEntries,vEntries) == 1
fprintf('both vectors have %i entries\n',n)
d1 = transpose(u)*v;
d2 = 0;
for i= 1:m
for j = 1:n
d2 = d2 + u(i,j)*v(i,j);
end
end
d = dot(u,v);
if d1 == d2 && d2 == d
fprinitf('the code is correct\n');
uMag = norm(u);
vMag = norm(v);
Theta = acosd(d/(uMag*vMag));
if 90 == closetozeroroundoff(Theta)
disp('The angle between the vectors is 90 degrees.');
elseif 0 == closetozeroroundoff(Theta)
disp('The angle between the vectors is zero');
elseif 180 == closetozeroroundoff(Theta)
disp('The angle between the vectors is 180 degrees');
else
if Theta < 90
fprintf('Angle between vectors is acute and its value theta = %d\n',Theta);
elseif Theta > 90
fprintf('Angle between vectors is obtuse and its value theta = %d\n',Theta);
end
end
end
else
disp('check the code!');
return
else
disp('the dot product is not defined')
d1 = [];
d2 = [];
d = [];
return
end
end
0 个评论
回答(1 个)
Sindar
2020-9-25
编辑:Sindar
2020-9-25
you have two else's for the same if. Select it all and hit CTRL-i to smart indent to see:
function [d1,d2,d] = dotangle(u,v)
m = length(u);
n = length(v);
if isequal(uEntries,vEntries) == 1
fprintf('both vectors have %i entries\n',n)
d1 = transpose(u)*v;
d2 = 0;
for i= 1:m
for j = 1:n
d2 = d2 + u(i,j)*v(i,j);
end
end
d = dot(u,v);
if d1 == d2 && d2 == d
fprinitf('the code is correct\n');
uMag = norm(u);
vMag = norm(v);
Theta = acosd(d/(uMag*vMag));
if 90 == closetozeroroundoff(Theta)
disp('The angle between the vectors is 90 degrees.');
elseif 0 == closetozeroroundoff(Theta)
disp('The angle between the vectors is zero');
elseif 180 == closetozeroroundoff(Theta)
disp('The angle between the vectors is 180 degrees');
else
if Theta < 90
fprintf('Angle between vectors is acute and its value theta = %d\n',Theta);
elseif Theta > 90
fprintf('Angle between vectors is obtuse and its value theta = %d\n',Theta);
end
end
end
else
disp('check the code!');
return
else
disp('the dot product is not defined')
d1 = [];
d2 = [];
d = [];
return
end
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!