Effacer les filtres
Effacer les filtres

Graphical representation of Ping

34 vues (au cours des 30 derniers jours)
tyler
tyler le 8 Mar 2013
Hello ,
I hope anyone can answer this question!!
I want to represent ping result of an IP address using matlab in a graphical way .i am pinging the IP:192.168.1.1 using this command : [status, result] = dos('ping 192.168.1.1', '-echo') and getting the following :
>>result
result =
Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time=2ms TTL=64
Reply from 192.168.1.1: bytes=32 time=4ms TTL=64
Reply from 192.168.1.1: bytes=32 time=10ms TTL=64
Reply from 192.168.1.1: bytes=32 time=8ms TTL=64
Ping statistics for 192.168.1.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Is there any way to take the time variable that is inside the result and plot a graph so the output of the graph looks close to this :
TIME
10ms| *
8ms| *
6ms|
4ms| *
2ms| *
-|-----------------------> PING NUMBER
1st 2nd 3rd 4th# Item one
# Item two
  4 commentaires
tyler
tyler le 8 Mar 2013
Modifié(e) : tyler le 8 Mar 2013
Do i have to modify that expression?
because after i tried it i got this:
>> time = cellfun(@(y)(str2double(y{2})), regexp(result, '(time=)(\d[\d]*\.\d[\d]*)', 'tokens'))
time =
[]
I really appreciate your help Daniel :)
tyler
tyler le 8 Mar 2013
I also tried time[=<] instead of time=
but still getting an empty array for the time variable .
please advise :) Thanks

Connectez-vous pour commenter.

Réponses (2)

Daniel Shub
Daniel Shub le 8 Mar 2013
Modifié(e) : Daniel Shub le 8 Mar 2013
You can extract the time data with a regular expression
time = cellfun(@(y)(str2double(y{2})), regexp(result, '(time[=<])([\d]*\.[\d]*)', 'tokens'))
  8 commentaires
Walter Roberson
Walter Roberson le 9 Mar 2013
Tyler, Daniel's expression
time = cellfun(@(y)(str2double(y{2})), regexp(result, '(time[=<])([\d]*\.[\d]*)', 'tokens'))
is like writing
time = cellfun( @Convert_To_Number, regexp(result, '(time[=<])([\d]*\.[\d]*)', 'tokens') );
function result = Convert_To_Number( y )
result = str2double( y{2} );
end
That is, "y" is just the name of the variable used temporarily to perform the function.
Daniel Shub
Daniel Shub le 9 Mar 2013
My regexp is wrong. I don't use Windows so my ping returns something slightly different from yours. I didn't check to compare. My ping returns time as 20.2ms while yours does not have the decimal. The regexp looks for the word "time" followed by either = or <, and then followed by and number of digits (\d) a decimal point (\.) and en any number of digits. Since your ping does not return a decimal point just remove the \.[\d]* from the regexp. The y is just a fancy way of making cell fun work. Focus on getting regexp to return something meaningful.

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 8 Mar 2013
Example:
plot(rand(1,10), 'LineStyle', 'none', 'Marker', '*')

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by