Conversion du code javascript en matlab
Fermé
arnold2008
-
21 oct. 2008 à 11:28
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 22 oct. 2008 à 22:54
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 22 oct. 2008 à 22:54
A voir également:
- Matlab to javascript
- Qwerty to azerty - Guide
- Telecharger javascript - Télécharger - Langages
- Video to video - Télécharger - Conversion & Codecs
- Majuscule to minuscule - Guide
- Acsm to pdf ✓ - Forum PDF
4 réponses
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>
<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>
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 835
21 oct. 2008 à 14:58
21 oct. 2008 à 14:58
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.
Je vois ça plus tard.
T'as qu'à envoyer ce que t'as déjà fait en attendant.
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 835
22 oct. 2008 à 22:54
22 oct. 2008 à 22:54
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.
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 835
21 oct. 2008 à 11:35
21 oct. 2008 à 11:35
Salut
Sans le programme, ça va être dur de convertir quoi que ce soit :-D
Bonne journée
Sans le programme, ça va être dur de convertir quoi que ce soit :-D
Bonne journée