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:

Recommended Answers

All 4 Replies

the code you posted is not perl, I am not sure after reading your post if you know that or not.

commented: Thank you for the assistance :) +2

Oh my I did not realize that. I was told that it was Perl and that I should convert it to Python. Can someone please tell me what programming language it is? It had the file extension .m

I'm pretty sure its matlab, of which I know nothing. So I suggest you find a matlab forum or mailing list.

hehe considering the file extension I think you're you're right! I'd like the original algorithm instead of translating from one language to anther. Anyway, thank you for your assistance!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.