精华内容
下载资源
问答
  • WIFI信号强度测试软件

    2020-09-25 09:01:57
    测试WIFI信号强度 挺好用的 用环形表示信号的强弱 测试WIFI信号强度 挺好用的 用环形表示信号的强弱
  • 2、 在Time Graph页签中查看WIFI信号强度,一般信号强度在-30dbm-120dbm之间,正常信号强度应该是-40dbm-85dbm之间,小于-90dbm就很差了,几乎无法连接,Android具体评判标准如下: 小于等于-100 WIFI图标为0格 (-...

    1、 打开工具inSSIDer,勾选指定WIFI
    2、 在Time Graph页签中查看WIFI信号强度,一般信号强度在-30dbm-120dbm之间,正常信号强度应该是-40dbm-85dbm之间,小于-90dbm就很差了,几乎无法连接,Android具体评判标准如下:
    小于等于-100 WIFI图标为0格
    (-100,-88】 WIFI图标为1格
    (-88,-77】 WIFI图标为2格
    (-77,-55】 WIFI图标为3格
    大于-55 WIFI图标为4格

    在这里插入图片描述

    展开全文
  • WiFi信号强度测试工具

    2020-03-10 09:46:40
    1.获取权限 <!-- 获取权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />...uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> &l...

    1.获取权限

    <!-- 获取权限 -->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
        <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
    

    2.布局代码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
    
        <TableRow
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp">
    
            <TextView
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="50dp"
                android:gravity="center"
                android:text="WiFi名称:"
                android:textColor="#f00"
                android:textSize="25dp" />
    
            <TextView
                android:id="@+id/showname"
                android:layout_width="230dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:background="#E0FFFF"
                android:gravity="center"
                android:textColor="#000"
                android:textSize="25dp" />
        </TableRow>
    
        <TableRow
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp">
    
            <TextView
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="50dp"
                android:gravity="center"
                android:text="信号强度:"
                android:textColor="#f00"
                android:textSize="25dp" />
    
            <TextView
                android:id="@+id/show"
                android:layout_width="230dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:background="#E0FFFF"
                android:gravity="center"
                android:textColor="#000"
                android:textSize="25dp" />
        </TableRow>
    
        <TableRow
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp">
    
            <TextView
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="50dp"
                android:gravity="center"
                android:text="MAC地址:"
                android:textColor="#f00"
                android:textSize="25dp" />
    
            <TextView
                android:id="@+id/showmac"
                android:layout_width="230dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:background="#E0FFFF"
                android:gravity="center"
                android:textColor="#000"
                android:textSize="25dp" />
        </TableRow>
    
        <TableRow
            android:layout_width="500dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp">
    
            <TextView
                android:layout_width="160dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="50dp"
                android:gravity="center"
                android:text="IP地址:"
                android:textColor="#f00"
                android:textSize="25dp" />
    
            <TextView
                android:id="@+id/showip"
                android:layout_width="230dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:background="#E0FFFF"
                android:gravity="center"
                android:textColor="#000"
                android:textSize="25dp" />
        </TableRow>
    
        <TableRow
            android:layout_width="800dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp">
    
            <TextView
                android:layout_width="210dp"
                android:layout_height="250dp"
                android:background="#E6E6FA"
                android:gravity="center"
                android:text="读数分析:\n\n数值越小信号越强"
                android:textColor="#000"
                android:textSize="25dp" />
    
            <LinearLayout
                android:layout_width="580dp"
                android:layout_height="match_parent"
                android:layout_marginLeft="10dp"
                android:background="#000"
                android:orientation="vertical">
    
                <TextView
                    android:id="@+id/showeff1"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:background="#ADFF2F"
                    android:gravity="center"
                    android:textColor="#000"
                    android:textSize="20dp" />
    
                <TextView
                    android:id="@+id/showeff2"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_marginTop="1dp"
                    android:background="#ADFF2F"
                    android:gravity="center"
                    android:textColor="#000"
                    android:textSize="20dp" />
    
                <TextView
                    android:id="@+id/showeff3"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_marginTop="1dp"
                    android:background="#E0FFFF"
                    android:gravity="center"
                    android:textColor="#000"
                    android:textSize="20dp" />
    
                <TextView
                    android:id="@+id/showeff4"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_marginTop="1dp"
                    android:background="#E0FFFF"
                    android:gravity="center"
                    android:textColor="#000"
                    android:textSize="20dp" />
    
                <TextView
                    android:id="@+id/showeff5"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:layout_marginTop="1dp"
                    android:background="#E0FFFF"
                    android:gravity="center"
                    android:textColor="#000"
                    android:textSize="20dp" />
    
            </LinearLayout>
        </TableRow>
    
    
        <Button
            android:id="@+id/res"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="20dp"
            android:background="#ff0"
            android:text="重 算"
            android:textSize="30dp" />
    
    
    </LinearLayout>
    

    3.Main_Activity.java主程序

    package topteam.com.wifi_test;
    
    import android.content.Context;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.net.InetAddress;
    import java.net.NetworkInterface;
    import java.net.SocketException;
    import java.util.Enumeration;
    
    public class MainActivity extends AppCompatActivity {
    
    
        TextView show_v;
        Handler wifiHandler;
        Handler handler;
        int signal;
        TextView showmac_v;
        TextView showip_v;
        TextView showName_v;
        TextView showEff1_v;
        TextView showEff2_v;
        TextView showEff3_v;
        TextView showEff4_v;
        TextView showEff5_v;
        Button res_v;
    
        String mac;
        String ipdd;
        String wifiName;
    
    
        static int eff1 = 0;
        static int eff2 = 0;
        static int eff3 = 0;
        static int eff4 = 0;
        static int eff5 = 0;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            show_v = findViewById(R.id.show);
            showmac_v = findViewById(R.id.showmac);
            showip_v = findViewById(R.id.showip);
            showName_v = findViewById(R.id.showname);
            showEff1_v = findViewById(R.id.showeff1);
            showEff2_v = findViewById(R.id.showeff2);
            showEff3_v = findViewById(R.id.showeff3);
            showEff4_v = findViewById(R.id.showeff4);
            showEff5_v = findViewById(R.id.showeff5);
    
            res_v = findViewById(R.id.res);
            res_v.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    show_v.setText("");
                    showEff1_v.setText("");
                    showEff2_v.setText("");
                    showEff3_v.setText("");
                    showEff4_v.setText("");
                    showEff5_v.setText("");
                    showip_v.setText("");
                    showmac_v.setText("");
                    showName_v.setText("");
                    eff1 = 0;
                    eff2 = 0;
                    eff3 = 0;
                    eff4 = 0;
                }
            });
    
    
            handler = new Handler() {
    
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    switch (msg.what) {
                        case 1:
                            show_v.setText(signal + "db");
                            if(signal<-65){
                                eff5++;
                                showEff5_v.setText("dbm大于65" + "     出现过" + eff5 + "次");
                            }
                            if (signal < -60 && signal>=-65) {
                                eff4++;
                                showEff4_v.setText("dbm在(60至65)" + "     出现过" + eff4 + "次");
                            }
                            if (signal < -55 && signal >= -60) {
                                eff3++;
                                showEff3_v.setText("dbm在(55至60)" + "     出现过" + eff3 + "次");
                            }
                            if (signal < -50 && signal >= -55) {
                                eff2++;
                                showEff2_v.setText("dbm在(50至55)" + "     出现过" + eff2 + "次");
                            }
                            if (signal >= -50) {
                                eff1++;
                                showEff1_v.setText("dbm小于50" + "     出现过" + eff1 + "次");
                            }
                            break;
                        case 2:
                            showmac_v.setText(mac + "");
                            break;
                        case 3:
                            showip_v.setText(ipdd + "");
                            break;
                        case 4:
                            showName_v.setText(wifiName + "");
                            break;
                        default:
                            break;
                    }
                }
            };
    
            wifiHandler = new Handler();
            wifiHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    WifiSignalIcon();
                    getMac();
                    getIpadd();
                    setWifiName();
                    wifiHandler.postDelayed(this, 300);
                }
            }, 100);
    
        }
    
        /**
         * 获取wifi的信号强度
         **/
        private void WifiSignalIcon() {
            try {
                signal = getwifisignal(MainActivity.this);
                Message message = new Message();
                message.what = 1;
                handler.sendMessage(message);
            } catch (Exception e) {
    
            }
        }
    
    
        /**
         * 获取wifi的信号
         **/
        public static int getwifisignal(Context context) {
            int signal = -100;
            try {
                ConnectivityManager cm = (ConnectivityManager) context
                        .getSystemService(Context.CONNECTIVITY_SERVICE);
                if (cm != null) {
                    boolean isWifiConnected = cm.getNetworkInfo(
                            ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ? true
                            : false;
                    if (isWifiConnected) {
                        WifiManager wifi_service = (WifiManager) context
                                .getSystemService(Context.WIFI_SERVICE);
                        WifiInfo wifiinfo = wifi_service.getConnectionInfo();
                        signal = wifiinfo.getRssi();
                        return signal;
                    } else {
                        return -65;
                    }
                } else {
                    return -45;
                }
            } catch (Exception e) {
                e.getMessage();
                return 0;
            }
        }
    
        /**
         * 获取设备的Mac地址
         *
         * @return Mac地址
         */
        public static String getLocalMacAddress() {
            String Mac = null;
            try {
                String path = "sys/class/net/wlan0/address";
                if ((new File(path)).exists()) {
                    FileInputStream fis = new FileInputStream(path);
                    byte[] buffer = new byte[8192];
                    int byteCount = fis.read(buffer);
                    if (byteCount > 0) {
                        Mac = new String(buffer, 0, byteCount, "utf-8");
                    }
                }
                Log.v("sdfdsfew", "" + Mac);
                if (Mac == null || Mac.length() == 0) {
                    path = "sys/class/net/eth0/address";
                    FileInputStream fis_name = new FileInputStream(path);
                    byte[] buffer_name = new byte[8192];
                    int byteCount_name = fis_name.read(buffer_name);
                    if (byteCount_name > 0) {
                        Mac = new String(buffer_name, 0, byteCount_name, "utf-8");
                    }
                }
                Log.d("fddsfds", "" + Mac);
                if (Mac.length() == 0 || Mac == null) {
                    return "";
                }
            } catch (Exception io) {
                Log.v("daming.zou**exception*", "" + io.toString());
            }
    
            Log.v("xulongheng*Mac", Mac);
            return Mac.trim();
    
        }
    
        private void getMac() {
            mac = getLocalMacAddress();
            Message message = new Message();
            message.what = 2;
            handler.sendMessage(message);
        }
    
    
        /**
         * 获取ip地址
         *
         * @param i
         * @return
         */
        private String intToIp(int i) {
            return (i & 0xFF) + "." +
                    ((i >> 8) & 0xFF) + "." +
                    ((i >> 16) & 0xFF) + "." +
                    (i >> 24 & 0xFF);
        }
    
        private String getIp() {
            //获取wifi服务
            WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            int ipAddress = wifiInfo.getIpAddress();
            String ip = intToIp(ipAddress);
            return ip;
        }
    
        private void getIpadd() {
            ipdd = getIp();
            Message message = new Message();
            message.what = 3;
            handler.sendMessage(message);
        }
    
        /*
         * 获取 WIFI 的名称
         * */
        public String getWiFiName() {
            WifiManager wm = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
            if (wm != null) {
                WifiInfo winfo = wm.getConnectionInfo();
                if (winfo != null) {
                    String s = winfo.getSSID();
                    if (s.length() > 2 && s.charAt(0) == '"' && s.charAt(s.length() - 1) == '"') {
                        return s.substring(1, s.length() - 1);
                    }
                }
            }
            return "Wifi 未获取到";
    
        }
    
        private void setWifiName() {
            wifiName = getWiFiName();
            Message message = new Message();
            message.what = 4;
            handler.sendMessage(message);
        }
    
    }
    
    
    展开全文
  • WIFI信号强度分析测试仪 Wifi Analyzer v2.4.9汉化版
  • 开发厂商:Home Page 文件格式:APK 软件语言:简体中文 软件性质:免费软件 ...支持多视图分析,各视图之间只需滑动屏幕即可切换,有快速设置通道,在查看数据后不必退出即可立刻选择信道或进行wifi设置。
  • 基于wifi信号强度的定位研究 Knn算法简介: knn分类算法是数据挖掘分类技术中最简单的方法之一。所谓knn就是在离未知数据k个最近的数据中,找到占比最高的同一类数据,从而预测未知数据类型就是该类数据。而在本次...

    Knn算法简介:

    knn分类算法是数据挖掘分类技术中最简单的方法之一。所谓knn就是在离未知数据k个最近的数据中,找到占比最高的同一类数据,从而预测未知数据类型就是该类数据。而在本次wifi信号定位的实验中,wifi发射器到手机的距离对于信号强度具有完全负相关性,可以抽象的将相关性理解为测试点到测试集点的欧式距离,因此,我组决定使用KNN算法。

    其次,Knn算法对数据没有假设,准确度高,对异常点敏感,因为是对于k取多个值,所以对于排除单个异常点具有很好的作用。在对于类域交叉或重跌较多的待分类样本集来说,knn算法具有更大的优势。基于此我们选择了knn算法来进行wife定位的研究。针对knn算法对于数据的依赖较大以及不能处理维度较高的问题,我们采取的方法是在有限的AP里面,依次排列组合,进行测试,找到一定数量较合适的AP数(即对高纬度数据进行降维),同时为了找到较为准确的数据,我们采取的是利用不同的手机采集相同AP的数据,进行测试判断,看误差率,判断是否需要进行归一化,降低不同设备之间带来的数据差异。

    具体采样方法:

    对北京工商大学良乡校区图书馆301的数据区域,按照6张桌子的位置划分为6个区域标签,每个桌子采集5-10次6个特定路由节点的ap信号强度。利用KNN我们便能测算出测试者坐在哪张桌子旁。误差测试检验:通过对比发现不仅仅是墙壁对信号有阻碍导致信号是飞线性规律增长或减小,还因为wifi信号的不稳定性而导致数据集出现较大的矛盾,数据中出现了的不合理数据占据了不小的成分,而因为每个点我们测试的数据量小,所以严重影响了KNN的分类效果。对此,我组成员通过讨论对已经出现的问题进行分析,提出以下可以尝试的基于当前KNN算法的数据集噪点的解决方案:

    对同一位置数据进行多次多路由节点的ap信号强度的采集,分别取每个路由节点其众数录入;

    对同一位置数据进行多次多路由节点的ap信号强度的采集,分别取每个路由节点其平均数录入;

    对同一位置数据再次进行多次多路由节点的ap信号强度的采集,将数据全部录入,并根据数据集大小适当增大K值;

    扩大划分区域的面积,从座位的点到一片方形区域,然后每个方形区域多次、均匀采集点的多wifi节点ap信号强度;

    总结:通过我组组员反复商讨,认为在之前的采集方案上对于wifi信号在同一位置的波动造成的影响是现在影响我们数据集准确度的最大因素,而增大数据集是增加机器学习算法鲁棒性的最有效方法,因此,综合考虑组员的时间安排和本次实验的时间成本预算,我们决定采用3号改进解决方案来提高本次实验KNN算法的分类效果。

    算法流程:

    1. 载入数据集,对数据进行必要的预处理

    2. 设置参数K,K最好选择奇数,因为后续进行归类的策略是少数服从多数,设置K为奇数的话总会有结果。

    3. 计算待预测点与已知点之间的关系,这里的关系可以有多种方式来体现,常用如下:

    ①欧式距离(应用较广,其他及其算法也有广泛应用),其计算方法: D=

    ②余弦值

    ③相关度

    ④曼哈顿距离

    ⑤…

    1. 之前确定了参数K,计算了待预测点与已知点之间的距离衡量,将计算的结果进行从小到大排序,取前K个点

    2. 将待预测点归类为多数的那一个类别,这便是对于未知点的类别预测结果了。

    具体操作过程及其实验细节:在数据保证较为准确的前提下,在knn算法中我们对于k值的选取,做了一定处理,先是进行留出法进行测试,就是固定选取样本集的前几个或几十几百个作为测试集,依次调整测试集的数量,并在控制测试集数量的前提下依次对k值进行从小到大的选取,测试,找到错误率最小的k值,在把由该测试集和k值得到的错误率与由其他测试集和k值的到的错误率进行对比,找到基于留出法得到的最佳K值。与k折交检验中的留一法得到的错误率最小的k值进行对比,找到最佳k值,若k值相等,则就取该k值,否则k值互相带入,进行错误率检验,与原误差进行对别,找到差值最小的那个k值,作为模型的K值。

    最后,在调查区域内,随机采样进行预测。同时收集其他小组的数据集进行模型的大致泛化检验。

    实验结果:

    训练集&测试集:
    ap1 ap2 ap3 ap4 ap5 ap6 位置id

    47 60 62 68 71 72 3011

    60 51 58 64 60 72 3011

    60 49 57 76 68 80 3012

    52 61 58 61 74 74 3013

    54 63 61 68 77 74 3014

    58 66 68 53 80 67 3015

    63 74 65 54 78 76 3015

    56 70 74 62 82 68 3014

    50 63 53 65 63 77 3013

    51 61 57 76 53 77 3012

    55 52 62 67 61 81 3011

    56 62 67 76 75 78 3012

    61 60 62 77 53 83 3011

    64 53 62 77 58 80 3011

    54 77 64 58 84 66 3014

    49 64 60 75 63 76 3013

    51 67 56 66 75 67 3014

    63 76 71 57 67 74 3015

    60 65 70 49 69 73 3015

    56 73 66 56 81 67 3014

    57 74 67 57 70 77 3015

    53 70 62 65 73 78 3013

    60 59 62 75 54 79 3011

    58 55 70 72 60 82 3011

    53 61 56 65 62 78 3012

    51 61 60 64 51 75 3012

    51 64 58 78 73 77 3012

    56 65 58 73 51 79 3012

    49 67 59 64 74 78 3013

    48 64 57 72 73 71 3013

    49 71 53 64 59 78 3013

    51 68 56 72 75 75 3013

    54 65 62 65 53 76 3014

    59 72 70 58 70 66 3014

    54 73 61 63 81 75 3014

    57 67 68 53 67 71 3015

    68 75 74 54 78 79 3015

    66 77 76 46 78 77 3015

    65 74 77 51 75 75 3015

    63 75 70 57 78 71 3015

    64 74 69 49 69 73 3015

    64 88 65 48 73 69 3015

    53 68 62 62 74 69 3014

    57 69 57 55 73 73 3014

    59 72 65 51 73 67 3015

    52 73 60 57 67 72 3014

    53 68 54 64 71 78 3013

    51 68 52 75 61 74 3013

    51 64 53 66 72 75 3013

    48 57 59 66 73 74 3013

    54 61 57 65 70 81 3012

    51 62 59 71 57 83 3012

    56 61 68 71 68 81 3012

    62 60 67 68 63 78 3012

    62 44 59 64 53 77 3011

    60 48 56 67 51 76 3011

    67 45 58 73 51 76 3011

    61 46 67 75 53 77 3011

    66 50 61 76 53 76 3011

    62 55 55 73 53 83 3011

    61 47 56 69 56 75 3011

    60 50 70 77 56 78 3011

    64 58 57 67 56 74 3011

    58 57 67 68 53 73 3011

    65 54 67 74 55 75 3011

    57 54 72 74 59 75 3011

    67 56 57 64 55 75 3012

    58 57 60 66 61 75 3012

    57 64 56 63 57 75 3012

    60 59 63 69 68 73 3012

    56 57 61 60 63 75 3012

    59 58 54 69 70 76 3012

    54 59 51 64 70 69 3012

    55 63 59 64 69 73 3012

    55 59 59 65 63 69 3012

    52 65 55 65 63 68 3012

    51 63 48 66 53 67 3012

    49 66 55 68 51 68 3012

    48 63 43 64 69 67 3013

    53 57 53 58 70 72 3013

    48 59 48 61 70 71 3013

    50 67 53 62 63 68 3013

    48 61 54 60 63 65 3013

    49 64 49 60 63 72 3013

    49 62 53 57 63 72 3013

    47 66 51 62 60 67 3013

    51 62 52 57 61 68 3013

    42 65 54 53 61 69 3013

    44 80 47 57 61 61 3013

    55 67 47 55 72 73 3013

    55 70 60 59 71 63 3014

    50 71 59 63 53 64 3014

    58 70 61 57 68 63 3014

    55 66 61 52 66 61 3014

    52 64 61 56 67 62 3014

    50 62 59 54 67 63 3014

    55 66 57 55 70 63 3014

    62 70 57 59 74 66 3014

    56 69 62 61 67 72 3014

    56 68 61 55 74 67 3014

    53 76 58 56 78 68 3014

    58 76 55 57 77 68 3014

    63 74 69 48 76 67 3015

    64 70 69 45 69 58 3015

    65 74 64 49 65 62 3015

    62 68 69 50 71 62 3015

    63 73 60 47 78 65 3015

    63 68 65 54 78 65 3015

    62 70 63 48 67 67 3015

    61 67 68 45 73 61 3015

    60 70 68 50 73 61 3015

    57 64 64 51 69 66 3015

    61 65 62 49 70 67 3015

    67 74 61 54 73 66 3015

    57 45 77 80 58 78 3011

    60 56 70 67 64 78 3011

    57 61 68 70 71 82 3012

    52 65 57 63 74 73 3013

    69 75 77 45 77 75 3015

    48 69 55 75 69 76 3013

    测试方法:

    我们采用留一法,将每条数据都作为测试集,然后其他数据作为训练集来测试模型准确度,最终K=4时产生最好结果,总错误率为15%,如下图所示:
    在这里插入图片描述

    相较于之前的35%错误率,这次的数据集改进提高了20%的准确率,验证了我们之前提出的假设:wifi同位置的信号波动是影响knn分类准确性的重要因素。

    K值的选择:

    K值 错误率(%)
    7 17.5
    5 15.8333
    6 15.8333
    4 15%
    3 17.5
    2 24.1667
    1 24.1667

    由上表可知,wifi信号的噪点还是明显存在的,在120条数据的情况下,K=4的时候排除噪点影响的效果是较好的。

    python代码如下

    from sklearn.model_selection import LeaveOneOut
    from numpy import *
    import operator
    
    def classify0(inx, dataset, labels, k):#inx是测试集,dataset是训练集,labels是标签向量,k是选择的数目
        datasetsize=dataset.shape[0] #shape 统计有多少行
        diffmat = tile(inx, (datasetsize, 1))-dataset #将测试集复制为datasetsize行1列
        sqdiffmat = diffmat**2
        sqdistances = sqdiffmat.sum(axis=1)
        distances = sqdistances**0.5
        sorteddistindicies = distances.argsort()#函数返回的是数组值从小到大的索引值
        classcount = {}
        for i in range(k):
            votelabel = labels[sorteddistindicies[i]]
            classcount[votelabel] = classcount.get(votelabel, 0)+1
        sortedclasscount = sorted(classcount.items(), key=operator.itemgetter(1), reverse=True)
        return sortedclasscount[0][0]
        
    def file2matrix(filename):
        fr = open(filename)#打开储存文件的数据,并用fr来表示它
        arrayOLines = fr.readlines() #把fr中每一行作为一个字符串存入列表中,返回该列表
        numberOFLines = len(arrayOLines)#读取这个文件的行数
        returnmat = zeros((numberOFLines, 6))#创建一个numberOFLines行,3列的归0矩阵
        classLabelvector = []#创建一个空列表
        index = 0#初始化索引下标
        for line in arrayOLines:#遍历文件
            line = line.strip()#默认删除首尾空白字符
            listFromline = line.split('\t') #把line中的字符串转化为列表(以制表符划分)
            returnmat[index,:] = listFromline[0:6]  # 把前三列数据存入到returnmat列表中
            classLabelvector.append(int(listFromline[-1]))#把最后一列数据转化为整形存入到classLabelvector中
            index += 1
        return returnmat, classLabelvector
        
    def datingclasstest():
        data,label=file2matrix('F:\实战练习\data3.txt')
        x=data
        y=array(label)
        loo = LeaveOneOut()
        errorcount=0
        m = data.shape[0]
        for train_index, test_index in loo.split(x, y):
            print("X_train:", x[train_index])
            print("X_test:", x[test_index])
            print("y-train:" ,y[train_index])
            classifierresult = classify0(x[test_index], x[train_index],
                                         y[train_index], 4) 
            print('the classfier came back with : %d,the real answer is :%d'
                  % (classifierresult, y[test_index]))
            if classifierresult != y[test_index]:  # 对错误率进行计数
                errorcount += 1.0
        print('the total error rate is :%f' % (errorcount / float(m)))
    
    def classifyPerson():
        AP1 = float(input("please enter the ap1 Signal strength:"))
        AP2 = float(input("please enter the ap2 Signal strength:"))
        AP3 = float(input("please enter the ap3 Signal strength:"))
        AP4 = float(input("please enter the ap4 Signal strength:"))
        AP5 = float(input("please enter the ap5 Signal strength:"))
        AP6 = float(input("please enter the ap6 Signal strength:"))
        datingdatamat, datingLabels = file2matrix('F:\实战练习\data3.txt')
        inArr = array([AP1, AP2, AP3, AP4, AP5, AP6])
        classifierResult = classify0(inArr,datingdatamat , datingLabels, 4) #
        print("your location is:", classifierResult)
    
    if __name__=="__main__":
        datingclasstest()
        classifyPerson()
    

    创作人:何英洁、王磊、王鹏、代玉龙

    展开全文
  • 使用shell命令行查询wifi信号强度

    千次阅读 2018-07-20 14:30:46
    无线信号强度解析及linux如何查看wifi信号强弱等   测试环境中,无线网卡的接口id为wlan0 一秒周期查看无线网卡信息 #watch -n 1 cat /proc/net/wireless 获取信号强度: # cat /proc/net/wireless |grep ...

    参考:

    Linux系统中iwconfig命令使用详解

    无线信号强度解析及linux如何查看wifi信号强弱等

     

    测试环境中,无线网卡的接口id为wlan0

    一秒周期查看无线网卡信息

    #watch -n 1 cat /proc/net/wireless

    获取信号强度:

    # cat /proc/net/wireless |grep wlan0 |awk '{print $3}'
    70.

    获取信号质量:单位dBm

    # cat /proc/net/wireless |grep wlan0 |awk '{print $4}'
    -38.

    网口的背景噪声:单位dBm

    # cat /proc/net/wireless |grep wlan0 |awk '{print $5}'
    -256

    网口的传输速率:Mb/s = 1000000bps

    # iwconfig wlan0 | sed 's/ /\n/g' | grep -i Rate | sed 's/=/ /g'|awk '{print $2}'
    7.2

    在程序中执行这些命令后需要获取返回结果,最简单的方法是,将命令行结果重定向到一个临时文件,然后读取这个临时文件,从而获得外部命令执行结果。

    展开全文
  • 当我们在使用wifi上网时,在某些角落会出现无wifi信号,或是时有时无的状态。...今天我们就来用一款软件来帮助您测试wifi信号强度。 工具/原料 笔记本 WirelessMon.exe 软件 ...
  • 今天我发现了一款用Python写成的用于检测AP信号强度的工具:wifi-linux。我已经在wifi-linux上实验了大约两个小时,并且它工作的很好,但是我希望在不久的将来在作者那里看到一些单元测试,因为命令plot无法在我的...
  • static void ICACHE_FLASH_ATTR wifi_scan_done(void *arg, STATUS status) { uint8 ssid[64]; char buffer[256]; if (status == OK)  { struct bss_info *bss_link = (struct bss_info *)arg; os_printf("...
  • wifi信号测试工具.rar

    2020-03-29 15:15:32
    可以用来检测监视各种无线局域网接入点的信号强度。与此同时 ,用户还可以掌握该接入点的速度和相关的设置等
  • 无线WiFi和声音一样,强度是可以测量的,笔记本电脑安装测试软件就可以测量无线信号强度,其中一款最常用的无线信号强度测试软件WirelessMon。 WirelessMon能列出周边所有的无线路由器、无线AP或无线基站发出的信号...
  • WirelessMon.exe是一款在电脑上运行的,能直接看到WIFI信号值的一款WIFI信号检测软件。可以用于对比路由器信号值,或者电脑WIFI性能的一个很好的工具! 现在市面上几乎所有的笔记型计算机,都内建的无线网络功能。...
  • 今天我们一起来聊聊,无线网络信号强度测试方式。正文无线网络可通过其信号强度、稳定性、漫游性能等质量指标进行评估。信号强度是无线网络信号的强弱程度,信号强度单位dBm。信号强度负得越小信号越好,根据经验...
  • 如何用wifi-linux检测AP信号强度 作为一名python极客,我喜欢在github上挖掘新的用于linux用户的python工具。今天我发现了一款用python写成的用于检测AP信号强度的工具:wifi-linux。 我已经在wifi-linux上实验了...
  • c#的wifi信号检测

    2018-11-29 09:53:36
    主要用来实时测试固定wifi信号强度,修改代码后可用于wifi的查找,连接,信号强度
  • android wifi信号检测

    2015-10-04 11:28:09
    ps:范围0-100,数值越大信号越好。 原理:通过WifiManager获取系统wifi强度数值。...然后重新获取可以是另一点wifi信号强度的区间。 因为最近要开始做路由器开发,为测试newifi智能路由器的信号强
  • 今天电脑学习小编给大家推荐一款非常好用的APP免费、无广告、还纯净可以测试你的手机信号好不好还可以检测你周围的WiFi强度如何打开软件就能知道房间角落信号怎么样还能测试你家WiFi的网速呢不过这款APP目前只有安卓...
  • WiFi信号和声音一样,强弱都是可以测量的,检测WiFi的方法有很多,作为普通的家庭用户,我们有时需要测试WiFi的速度、信号强度、周围WiFi干扰等等,那么wifi信号如何检则呢?如何解决wifi信号不好的问题呢?我们今天...
  • 1、WiFi功能测试: 验证WiFi模块设置(如:添加AP、静态IP及动态IP的设置等)的... 2)WiFi信号强度测试:测试WiFi在不同位置(如:距离AP无障碍处X米、有障碍区(如:隔离一堵墙、堵墙)等的信号强度,测试WiFi信...
  • WiFi信号和声音一样,强弱都是可以测量的,检测WiFi的方法有很多,作为普通的家庭用户,我们有时需要测试WiFi的速度、信号强度、周围WiFi干扰等等,那么wifi信号如何检则呢?如何解决wifi信号不好的问题呢?我们今天...
  • WiFi信号和声音一样,强弱都是可以测量的,检测WiFi的方法有很多,作为普通的家庭用户,我们有时需要测试WiFi的速度、信号强度、周围WiFi干扰等等,那么wifi信号如何检则呢?如何解决wifi信号不好的问题呢?我们今天...
  • 测试方案】Wifi热点对比测试

    千次阅读 2016-02-23 15:28:26
    前段时间公司需要调研几款wifi的性能,故对wifi的性能对比测试进行了几点研究: 相同硬件环境中,在无线网卡驱动不变...对于信号强度,火星和猎豹都是调用系统API创建出WIFI,Windows的API没有可以控制承载网络的信号
  • android wifi测试demo

    2018-11-02 17:44:49
    Android wifi测试demo,获取wifi信息,信号强度等等,模拟系统wifi列表,通信
  • WiFi信号和声音一样,强弱都是可以测量的,检测WiFi的方法有很多,作为普通的家庭用户,我们有时需要测试WiFi的速度、信号强度、周围WiFi干扰等等,那么wifi信号如何检则呢?如何解决wifi信号不好的问题呢?我们今天...

空空如也

空空如也

1 2 3 4 5
收藏数 100
精华内容 40
关键字:

wifi信号强度测试