Conversion du code javascript en matlab

Bonjour,

J'ai un mini programme écrit sous javascript et je voudrai le convertir en matlab. Quelqu'un peut-il m'aider s'il vous plaît?
Merci d'avance et au plaisir de lire votre proposition.
Configuration: Windows XP
Firefox 3.0.3

4 réponses

  1. Si tu me montres pas ce que t'as fait et où t'as des soucis, je vois mal comment je vais pouvoir t'aider.
    1. Ah ouais, il y en a un bon pavé.
      Je vois ça plus tard.
      T'as qu'à envoyer ce que t'as déjà fait en attendant.
      1. Slt, voici le programme en kestion:
        <script language="JavaScript" type="text/javascript">
        // global variables
        var mw; // milliwatts
        var w; // watts
        var dbm; // dBm
        var dbw; // dBW
        var num; // intermediate results
        var f; // frequency
        var d; // distance
        var ktm = .621; // km to miles
        var mtk = 1.609; // miles to klics
        var ftm = 3.28; // meters to feet
        var mtf = .3048 // feet to meters
        var db; // work variable
        function round(number,places) {
        // rounding numbers default = 3
        places = (!places ? 3 : places);
        return Math.round(number*Math.pow(10,places))/Math.pow(10,places);
        }

        function log10(x) {
        // Log 10 calculation
        return(Math.log(x) / Math.log(10));
        }

        function from_dbm(u_dbm) {
        // convert dbm to watts and milliwatts
        dbm = parseFloat(u_dbm);

        // validate dbm range
        if ((isNaN(dbm)) || (dbm < -110) || (dbm > 100))
        {
        window.alert("dBm range from -110 to 100");
        return("Error");
        }

        mw = Math.pow(10,dbm / 10);

        return(round(mw,3));
        }

        function to_dbm(u_mw) {
        w = parseFloat(u_mw);

        // validate milliwatts range
        if ((isNaN(w)) || (w < 0) || (w > 20000))
        {
        window.alert("millWatts range = 0 to 20,000");

        return("Error");
        }
        w = log10(w) / log10(10);
        dbm = round((10 * w),3);
        return(dbm);
        }

        function free_space(u_freq, u_km, u_miles) {

        f = parseFloat(u_freq);
        if ((d = check_m(u_km,u_miles,"Distance")) == "Error")
        {
        return("Error");
        }
        // validate frequency
        if ((isNaN(f)) || (f < 100) || (f > 60000))
        {
        window.alert("Frequency (in MHz) range = 100 to 60,000");
        return("Error");
        }

        f = log10(f) / log10(10);
        d = log10(d) / log10(10);

        return(round((20 * f) + (20 * d) + 36.56,3));

        }
        function check_dbm(u_dbm, u_mw)
        {
        // normalise power to dbm
        if(u_dbm == "")
        {
        dbm = to_dbm(u_mw);
        }
        else
        {
        dbm = parseFloat(u_dbm);
        }
        //validate dbm range
        if ((isNaN(dbm)) || (dbm < -110) || (dbm > 100))
        {
        window.alert("dBm range from -110 to 100");
        return("Error");
        }
        return(dbm);
        }

        function check_km(k,m,e) // returns KM
        {
        if(k == ""){
        if(m == ""){ // must have a mile measure

        alert(e+" not supplied");// error
        return -1;
        }
        else{

        if(isNaN(m) || m < 0.1 || m > 100){
        alert(e+" (Miles) not numeric or not in range .1 to 100");
        return -1;
        }
        tm = parseFloat(m);
        return (tm * mtk);
        }
        }
        else{
        if(isNaN(k) || k < 0.1 || k > 160){
        alert(e+" (Km) not numeric or not in range .1 to 160");
        return -1;
        }
        return parseFloat(k);
        }
        }
        function check_m(u_km, u_miles, err) // returns MILES
        {
        if(u_km == "")
        {
        // must be miles
        d = parseFloat(u_miles);
        if(isNaN(d) || d < 0.1 || d > 100)
        {
        window.alert(err+" range is .1 to 100 MILES");
        return("Error");
        }
        }
        else
        {
        d = parseFloat(u_km);
        if(isNaN(d) || d < 0.1 || d > 160)
        {
        window.alert("Distance range is .1 to 160 KM");
        return("Error");
        }
        d = d * ktm;
        }
        return(d);
        }

        // W3C DOM'ish
        function check_int(num, lo, hi, def, err)
        {
        if(num == "" && def != "")
        {
        return def; // just return default
        }

        tn = parseInt(num);
        if(isNaN(tn) || tn < lo || tn > hi)
        {
        alert(err+" must be in range "+lo+" to "+hi);
        return("Error");
        }
        return tn;
        }
        function fres_zone()
        {
        // note: uses explicit names in form which must be unique on page
        if((tl = check_km(document.getElementById("fltk").value,document.getElementById("fltm").value,"Total Link distance")) == -1)
        {
        return;
        }
        // tl valid numeric in Km check for obstacle - if not present = link/2
        tok = document.getElementById("flok").value;
        tom = document.getElementById("flom").value;
        if (tok == "" && tom == ""){
        // default in km link/2
        if (document.getElementById("fltk").value != ""){
        document.getElementById("flok").value = round(tl/2,3);
        }else{
        document.getElementById("flom").value = round((tl/2)*ktm,3);
        }
        }
        if((d1 = check_km(document.getElementById("flok").value, document.getElementById("flom").value, "Obstacle Distance")) == -1)
        {
        return;
        }
        d2 = tl - d1;
        // check frequency present and numeric
        flf = document.getElementById("flf").value;
        if(flf == "")
        {
        alert("Frequency not specified");
        return;
        }
        if(isNaN(flf ))
        {
        alert("Frequency not numeric");
        return;
        }
        freq = parseFloat(flf);

        freq = freq /1000; // in GHz
        // fresnel and obstacle free zone
        flrm = Math.round(17.3 * Math.sqrt((d1 * d2)/(freq * tl)));
        document.getElementById("flzm").value = flrm;
        document.getElementById("flzf").value = Math.round(flrm * ftm);
        document.getElementById("fld1k").value = round(d1,3);
        document.getElementById("fld1m").value = round(d1 * ktm,3);
        // 0.6 fresnel
        flr6m = round(flrm *0.6,3);
        document.getElementById("flofm").value = flr6m;
        document.getElementById("floff").value = Math.round((flr6m * ftm),3);
        // earth's height at mid point
        ehm = (Math.pow(tl,2)/(8*((4*6378)/3))) * 1000;
        document.getElementById("flehm").value = round(ehm,3);
        document.getElementById("flehf").value = round(ehm * ftm,3);
        }

        function power_budget()
        {
        if((dbm = check_dbm(document.getElementById("bdbm").value, document.getElementById("bmw").value)) == "Error")
        {
        return ("Error");
        }
        // antenna
        if((db = check_int(document.getElementById("bag").value,1,100, "", "Antenna Gain")) == "Error"){
        return "Error";
        }
        // result for gains
        radan_tot = dbm + db;
        document.getElementById("brr").value = round(dbm + db,3);

        if(document.getElementById("blf").value != "" || document.getElementById("blm").value != "")
        {
        // handle cable loss
        // we have a cable parameter normalise to meters
        if(document.getElementById("bcf").value != "")
        {
        // user supplied feet
        cable_loss = parseFloat(document.getElementById("bcf").value);
        if(isNaN(cable_loss))
        {
        window.alert("Cable loss not numeric");
        return("Error");
        }
        cable_loss = cable_loss * ftm;
        }
        else
        {
        cable_loss = parseFloat(document.getElementById("bcm").value);
        if(isNaN(cable_loss))
        {
        window.alert("Cable loss not numeric");
        return("Error");
        }
        }
        if(document.getElementById("blf").value != "")
        {
        // user supplied feet
        cable_length = parseFloat(document.getElementById("blf").value);
        if(isNaN(cable_length))
        {
        window.alert("Cable length not numeric");
        return("Error");
        }
        cable_length = cable_length * mtf;
        }
        else
        {
        cable_length = parseFloat(document.getElementById("blm").value);
        if(isNaN(cable_length))
        {
        window.alert("Cable length not numeric");
        return("Error");
        }
        }
        // normalise cable loss
        cable_tot = round((cable_loss /100) * cable_length,3);
        document.getElementById("bcr").value = cable_tot;
        }
        else
        {
        cable_tot = 0;
        document.getElementById("bcr").value = "0";
        }

        // handle connectors
        if(document.getElementById("bconno").value != "")
        {
        // handle connector loss
        f = parseFloat(document.getElementById("bconf").value);
        if ((isNaN(f)) || (f < 100) || (f > 25000))
        {
        window.alert("Frequency range 100 to 25,000 MHz");
        return("Error");
        }
        f = f /1000; //frequency in GHz
        num_con = parseInt(document.getElementById("bconno").value);
        if (isNaN(num_con))
        {
        window.alert("Number of connectors not numeric");
        return("Error");
        }
        // max. loss = 0.10 * sqrt(freq)
        con_tot = round(num_con * (0.1 * Math.sqrt(f)),3);
        document.getElementById("bconr").value = con_tot;
        }
        else
        {
        con_tot = 0;
        document.getElementById("bconr").value = "0";
        }
        document.getElementById("btr").value = round(radan_tot - con_tot - cable_tot,3);
        }

        function op_margin()
        {
        //calculate various operating margins or antenna gains or distance
        want_dis = 0;
        want_tan = 0;
        want_ran = 0;
        if((sad = check_int(document.getElementById("spomsad").value, 1, 100, 30, "SAD factor")) == "Error"){
        return "Error";
        }
        sad = sad/100;
        if(document.getElementById("spk").value == "" && document.getElementById("spm").value == ""){
        want_dis = 1; // no distance - solve for distance only
        }
        else
        {
        if((d = check_m(document.getElementById("spk").value, document.getElementById("spm").value, "Distance")) == "Error")
        {
        return("Error");
        }
        }
        // must always have valid frequency
        f = parseFloat(document.getElementById("spf").value);
        if(isNaN(f) || f < 100 || f > 60000)
        {
        window.alert("Frequency range is 100 to 60,000 MHz");
        return("Error");
        }
        f = log10(f) / log10(10);
        if(!want_dis)
        {
        d = log10(d) / log10(10);
        fs_loss = round((20 * f) + (20 * d) + 36.56,3);
        }
        // calculate tx power
        // confirm TX antenna gain
        if (document.getElementById("sptxa").value == "" && want_dis)
        {
        window.alert("Cannot solve for distance and TX antenna gain");
        return("Error");
        }
        else
        {
        if (document.getElementById("sptxa").value == "")
        {
        want_tan = 1; // solve for tx gain
        tx_an = 0; // temp
        }
        else
        {
        tx_an = parseFloat(document.getElementById("sptxa").value);
        }
        }
        if(isNaN(tx_an) || tx_an < 0 || tx_an > 100)
        {
        alert("Antenna gain range 0 to 100");
        return("Error");
        }
        // check radio power
        if((tx_dbm = check_dbm(document.getElementById("sptxdbm").value, document.getElementById("sptxmw").value)) == "Error")
        {
        return("Error");
        }
        // if cable loss invalid substitute 0
        tx_cable = parseFloat(document.getElementById("sptxc").value);
        if (isNaN(tx_cable))
        {
        tx_cable = 0;
        document.getElementById("sptxc").value = 0;
        }
        tx_budget = tx_an + tx_dbm - tx_cable;
        // calculate rx power
        // confirm RX antenna gain
        if (document.getElementById("sprxa").value == "" && want_dis)
        {
        window.alert("Cannot solve for distance and RX antenna gain");
        return("Error");
        }
        else
        {
        if (document.getElementById("sprxa").value == "")
        {
        want_ran = 1; // solve for rx gain
        rx_an = 0;
        }
        else
        {
        rx_an = parseFloat(document.getElementById("sprxa").value);
        }
        }
        if(isNaN(rx_an) || rx_an < 0 || rx_an > 100)
        {
        window.alert("Antenna gain range 0 to 100");
        return("Error");
        }
        // check radio power
        if((rx_dbm = check_dbm(document.getElementById("sprxdbm").value, "")) == "Error")
        {
        return("Error");
        }
        // if cable loss invalid substitute 0
        rx_cable = parseFloat(document.getElementById("sprxc").value);
        if (isNaN(rx_cable))
        {
        rx_cable = 0;
        document.getElementById("sprxc").value = 0;
        }
        rx_budget = rx_an - rx_dbm - rx_cable;

        // got everything we might need - figure out what to do
        if(!want_dis && !want_tan && !want_ran)
        {
        // straight calculation of margins
        document.getElementById("sprxr").value = round(rx_budget,3);
        document.getElementById("sptxr").value = round(tx_budget,3);
        document.getElementById("spfr").value = fs_loss;
        margin = tx_budget - fs_loss + rx_budget;
        document.getElementById("spomr").value = round(margin,3);
        document.getElementById("spomrx").value = round(margin + rx_dbm,3);
        document.getElementById("spomsad").value = round(((margin/tx_budget) * 100),3);
        }
        else
        {
        if (want_dis)
        {
        // solve for distance
        document.getElementById("sprxr").value = round(rx_budget,3);
        document.getElementById("sptxr").value = round(tx_budget,3);
        // reduce tx_budget by SAD
        tx_budget = tx_budget - (tx_budget * sad);
        fs_loss = tx_budget + rx_budget;
        // now solve fs equation for distance
        // 20*log10d(in miles) = 36.56 + (RX sensitivity + TX budget) + 20*log10(freq)
        alert("Solve for distance not currently operational - sorry");
        return("Error");
        }
        else
        {
        document.getElementById("spfr").value = fs_loss;
        temp_budget = tx_budget - (tx_budget * sad);
        gain = Math.ceil(fs_loss - (temp_budget + rx_budget));
        if(gain < 0){
        gain = 0;
        }
        // round gain up
        if(want_tan && want_ran){
        // solve for two antenna (symetric)
        gain = Math.ceil(gain /2);
        document.getElementById("sptxa").value = gain;
        document.getElementById("sprxa").value = gain;
        tx_budget = tx_dbm - tx_cable + gain;
        rx_budget = gain - rx_dbm - rx_cable;
        }else{
        // solve for one antenna
        if(want_tan){
        document.getElementById("sptxa").value = gain;
        tx_budget = tx_dbm - tx_cable + gain;
        }else{
        document.getElementById("sprxa").value = gain;
        rx_budget = gain - rx_dbm - rx_cable;
        }
        }
        document.getElementById("sprxr").value = round(rx_budget,3);
        document.getElementById("sptxr").value = round(tx_budget,3);
        document.getElementById("spfr").value = fs_loss;
        margin = tx_budget - fs_loss + rx_budget;
        document.getElementById("spomr").value = round(margin,3);
        document.getElementById("spomrx").value = round(margin + rx_dbm,3);
        if(document.getElementById("spomsad").value == ""){
        document.getElementById("spomsad").value = Math.ceil(sad * 100);
        }
        }
        }
        }

        //-->
        </script>
        1. Salut
          Sans le programme, ça va être dur de convertir quoi que ce soit :-D
          Bonne journée