Help with function main and writing cross product function

10 次查看(过去 30 天)
So I am trying to write a function to calculate the cross product of any two vectors. I am trying to write the code to work with some test vectors I have defined both vectors as 2 dimensional for my test but in eventuality I will want the code to accept either 2 dimensional or 3 dimensional vectors. So far I have:
function main
% vectors a = 3i + 11j; b = 14i - 7.3j;
a = [3 11]; b = [14 -7.3];
vec_c = crosspro(a, b)
end
function w = crosspro(u, v)
% crosspro calculates the crossproduct of u cross v
if length(u) == 2
u = [u 0 ];
end
if length(v) == 2
v = [v 0 ];
end
i = (u(2)*v(3)-u(3)*v(2));
j = (u(3)*v(1)-u(1)*v(3));
k = (u(1)*v(2)-u(2)*v(1));
result=[i j k];
end
I get an error if length(u) == 2, I was given them as a hint based on the code I had previously. Also it says output "w" (and maybe others) are not assigned during call main>crosspro.
Can someone help explain what is going on here and also how to fix my code to work from here? Thanks a bunch!

采纳的回答

Michael Haderlein
Michael Haderlein 2015-4-27
You have to decide if you want to name the output argument "w" or "result". If you change your second last line to
w=[i j k];
things will work. Just as a comment, if you want to make sure that also column vectors work, replace
u=[u 0];
with
u(3)=0;
The same with v of course. Also, I guess this is for educational purpose only - you know the function "cross", don't you?
  1 个评论
CalamityGoat
CalamityGoat 2015-4-27
Excellent! That worked perfectly, it makes sense that I should have named result w. I think I was trying to make result work like I remember return; working in c++. In either case thanks for the help and explanation.
Also I do know of the cross function but thank you for mentioning it as well.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Timing and presenting 2D and 3D stimuli 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by