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. Salut
    Sans le programme, ça va être dur de convertir quoi que ce soit :-D
    Bonne journée
    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. 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. 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.