0%

在之前的一篇文章《使用Vim撰写科研论文》中,我提到了曾经在Windows系统中使用Sublime+TexLive+SumatraPDF的组合来进行科研工作。现在介绍如何使用sublime来编辑LaTeX论文,真是恰逢其时。由于疫情原因在家隔离(家在湖北),只能使用我淘汰已久,赋闲在家的windows笔记本来进行科研工作。为此,在配置编辑环境的同时,我顺便来介绍其流程。毕竟,使用IDE来编写科研论文的人占绝大多数,使用Vim编写LaTeX的可能是凤毛麟角。因此,使用Sublime编写LaTeX可以看成两者的一个折中选择。

阅读全文 »

kNN (k-nearest neighbor)的定义

针对一个测试实例,在给定训练集中,基于某种距离度量找到与之最近的k个实例点,然后基于这k个最邻近实例点的信息,以某种决策规则来对该测试实例进行分类或回归。

由定义可知,$kNN$模型包含三个基本要素:距离度量、k值选择以及决策规则。再详细描述这三要素之前,我们先用一个样图来简单描述$kNN$分类模型的效果。

我们以二维平面为例,假设输入的训练集格式为$(x_1,x_2,l)$,其中$x_1, x_2$为横纵坐标,$l$为标签。这里我们考虑$k=1,3$的情况,决策规则为多数投票规则,即测试实例与k个实例中的多数属于同一类。图$1,2$分别是$k=1,3$时,二维特征空间划分图。

图1

阅读全文 »

在科研论文写作中,经常会遇到画描述tradeoff的仿真图。比如在5G相关的研究中,经常会出现能效与时延的tradeoff。本文主要介绍如何在论文仿真部分,根据仿真结果(存储于.dat文件中)绘制双Y坐标的曲线。

阅读全文 »

工欲善其事,必先利其器。

本文介绍如何使用Vim作为编辑器进行科研工作。一般来说,在学术界,使用Vim来写论文的人应该很少。即使是在工程界,大部分也都是使用的是各种IDE,使用Vim来编写代码的也属少数。大多数科研工作者一般都是使用WinEdtLyxTeXstudio等集成IDE,其中Lyx所见即所得的效果比较好。

阅读全文 »

在科研论文写作中,经常会遇到画色温图,3D图。此时一般输入的数据量比较大,导致在Latex中使用Tikz画图时出现内存不足的情况。常常报错如下:

1
! TeX capacity exceeded, sorry [main memory size=5000000].

参考pgfplots手册中的第六章,我们有以下解决方案:

  • 使用LuaTex进行编译
    有些版本不含LuaTex
  • 对输入数据采样降低数据量
    不是从本质上解决问题,降低了精度
  • 使用其它软件画图,e.g., MATLAB
  • 增大LaTex的编译内存
阅读全文 »

在科研论文写作中,我们经常需要放大局部图片来显示细节,即绘制图中图。在Matlab中可以使用magnify或则axes函数,网上有很多例子,这里不再赘述。本文主要讲解如何使用tikz/pgfplots来画局部放大图中图。

阅读全文 »

IBM CPLEX可以解SOCP问题,但是需要先将这个SOCP问题化为指定的格式。本文首先介绍SOCP问题,然后举例介绍如何将SOCP问题转化为CPLEX认可的输入格式并求解。

阅读全文 »

Win10下搭建VS2017+CUDA10.1+CPLEX12.9开发环境

想来已经有三、四年没有用过C/C++了,一直都是使用MATLAB进行算法的实现。相比于C/C++, MATLAB更加适合快速地实现算法,可视化仿真结果。但最近想学习并行计算(尽管MATLAB也可以实现并行化),并且实验室的服务器又装有RTX2080Ti的显卡,因此考虑使用CUDA平台实现GPU并行编程。另一方面,我需要使用IBM的CPLEX工具来验证算法的结果,于是乎就有了这篇文章。

阅读全文 »

上周,实验室国际友人让我帮忙实现满足条件的最小跳数最大权重的算法。他的具体问题如下:
给定一个权重图(如下图所示),给出节点之间最小跳数最大权重矩阵,其中任意两点之间跳数小于等于$3$,否则权重为inf。
图1

阅读全文 »