Hi guys, I'm trying to make sense of some Perl code. I haven't actually programmed in Perl before but I do image the functions/methods are similar to other languages. Here's the code:
function [dir, wspd] = conv_wind(uwind, vwind)
usize = length(uwind);
vsize = length(vwind);
if(usize ~= vsize)
dir = 0;
wspd = 0;
return
end
for m = 1:usize
uu = uwind(m);
vv = vwind(m);
wspd(m) = sqrt(vv^2 + uu^2);
if(uu ~= 0)
dir(m) = atan( abs(vv)/ abs(uu)) * (180 / 3.14159);
end
if( uu == 0 && vv > 0)
dir(m) = 90;
elseif(uu == 0 && vv < 0)
dir(m) = 270;
end
if( uu < 0 && vv > 0)
dir(m) = 180 - dir(m);
end
if( uu < 0 && vv < 0)
dir(m) = 180 + dir(m);
end
if( uu > 0 && vv < 0)
dir(m) = 360 - dir(m);
end
dir(m) = 450.0 - dir(m);
dir(m) = dir(m) + 180;
if(dir(m) > 360)
dir(m) = dir(m) - 360;
end
end
dir = dir';
wspd = wspd';
end
So I've noticed just like Python, there isn't data type binding during compile time. Now since the length function is being used on the uwind and vwind I'm assuming that they are actually a 'string' type variable? And when uwind(m) (line 11) is used, it means we are indexing the string? But then the indexed letter is squared and I'm all lost. I think I'm not understanding what happens at line 11 :icon_confused:
The above code is meant to convert the u and v components of wind speed to wind speed and direction. I don't think I really need the direction but on Wikipedia the volcity of wind is given by the square root of the sum of square of the u, v and w components.... but the above code doesn't even consider the w component which apparently is the wind velocity. The algo above does a bit more than that though...
So can someone please help me understand the code above... I think if I understand what line 11 means then I'll figure the rest out.
Thanks in advanced :icon_smile: