0%

2018年8月15日 下午5:46

2018年8月27日
vs解决无符号类型->安全开发生命周期(SDL)->vs版本升级
PCL报错4996
vs中新建工程
vs中调试要进行的配置
通过cmakeLists.txt来调试程序
vs如何将工程配置,保存到属性表
预处理器定义中_SCL_SECURE_NO_WARNINGS与error c4996的关系

2018年8月26日
点云配准代码
坐标系旋转变换公式图解+矩阵形式推导
如何查某期刊是否為SCI、SSCI Journal?
检索教程
点云配准原理简介

cmake-2
cmake-1
三维坐标系下坐标系的平移和旋转变换
科研路径套路
吴军:数学之美
如何培养数学兴趣
像学英语一样学习数学+使用数学解决问题的基本方式
数学中的直觉和推理的重要性
梯度、Hessian矩阵、平面方程的法线以及函数导数的含义
理解线性代数的一个新角度

图像处理之特征值和特征向量的意义
如何理解矩阵特征值?
矩阵特征值和椭圆长短轴的关系
浅谈物理公式中的意义
正确理解物理公式
奇异值分解(SVD)
浅谈物理公式中的意义
CloudCompare功能概要
Ceres Solver 在Windows下安装配置笔记
PMVS算法
雅可比矩阵
plane-sweep Algorithm
视差和深度的直观理解
深度图像
论文经验总结
参考文章
vs+pcl+vtk+cmake安装使用

2018年8月15日 下午3:13

傅里叶分析之掐死教程(完整版)更新于2014.06.06

  1. 这篇文章围绕傅里叶提到了很多的相关概念,这些概念对理解傅里叶也十分的额关键。
  2. 这篇文章的核心就是要理解最后的四张图的连续变换。每一个图都对应一个关键的知识点:欧拉公式-傅里叶变换-傅里叶级数
  3. 傅里叶级数定义:法国数学家傅里叶发现,任何周期函数都可以用正弦函数和余弦函数构成的无穷级数来表示(选择正弦函数与余弦函数作为基函数是因为它们是正交的),后世称傅里叶级数为一种特殊的三角级数,根据欧拉公式,三角函数又能化成指数形式也称傅立叶级数为一种指数级数
  4. 傅里叶变换主要是为了解决傅里叶变换级数造成的频域离散值,让离散值变的连续
  5. 这篇文章让我更加坚信,数学就是一个关系,而且这个关系发现的过程是一个感性的过程。

2018年8月25日 下午12:40

难点:【傅里叶变换实际上是对一个周期无限大的函数进行傅里叶变换】
这句话只可意会,不可言传:正是因为是一个周期无限大的函数,所以才会导致变换出来的频率是连续的。

  1. 时域的基本单元就是“1秒”,如果我们将一个角频率为\omega_{0} 的正弦波cos(\omega_{0} t)看作基础,那么频域的基本单元就是\omega_{0}
  2. 有了“1”,还要有“0”才能构成世界,那么频域的“0”是什么呢cos(0t)就是一个周期无限长的正弦波,也就是一条直线!所以在频域,0频率也被称为直流分量,在傅里叶级数的叠加中,它仅仅影响全部波形相对于数轴整体向上或是向下而不改变波的形状。
  3. 正弦波就是一个圆周运动在一条直线上的投影。所以频域的基本单元也可以理解为一个始终在旋转的圆
  4. 世界上每一个看似混乱的表象,实际都是一条时间轴上不规则的曲线,但实际这些曲线都是由这些无穷无尽的正弦波组成。
  5. 傅里叶分析究竟是干什么用的
    1. 我把sin(3x)+sin(5x)的曲线给你,但是前提是你不知道这个曲线的方程式,现在需要你把sin(5x)给我从图里拿出去,看看剩下的是什么。这基本是不可能做到的。
    2. 但是在频域呢?则简单的很,无非就是几条竖线而已。
  6. 相位谱:我们将投影得到的时间差依次除以所在频率的周期,就得到了最下面的相位谱
  7. 相位差:时间差并不是相位差。如果将全部周期看作2Pi或者360度的话,相位差则是时间差在一个周期中所占的比例。我们将时间差除周期再乘2Pi,就得到了相位差。
    1. https://pic3.zhimg.com/80/e1985fe86283a7b14d1fc7e11d322fcb_hd.jpg
  8. 一个函数(波形)分解成多个正弦波的叠加,并通过四中角度去观察:
    1. https://pic3.zhimg.com/4695ce06197677bab880cd55b6846f12_r.jpg
  9. 傅里叶级数的本质是将一个周期的信号分解成无限多分开的(离散的)正弦波
  10. 傅里叶级数和傅里叶变换的不同:
    1. 傅里叶级数在时域是一个周期且连续的函数,而在频域是一个非周期离散的函数。
    2. 傅里叶变换,则是将一个时域非周期的连续信号,转换为一个在频域非周期的连续信号
    3. 【傅里叶变换实际上是对一个周期无限大的函数进行傅里叶变换】
    4. https://pic4.zhimg.com/80/419cd0b2e965aca25d5f8a5a6362d728_hd.jpg
  11. 有了欧拉公式的帮助,我们便知道:正弦波的叠加,也可以理解为螺旋线的叠加在实数空间的投影。
  12. 图一是图二的另一中表示方式:图一种每一个螺旋线的投影是图二中的一个正弦线
    1. 图一:https://pic1.zhimg.com/f116ae26859bdc80b28ea0f8f894ccc0_r.jpg
    2. 图二:https://pic3.zhimg.com/ece53f825c6de629befba3de12f929a7_r.jpg

2018年08月6日 上午9:47

  1. 最关键的步骤是:
    1. 升级显卡的驱动,来提升显卡匹配的cuda版本
    2. 安装最新版的tensorflow时,要使用别人第三方程序安装,否则不支持最新的cuda
      1
      2
      3
      4
      5
      6
      7
      8
      Anaconda 5.2 For Windows Installer
      C:\Users\czh\Anaconda3

      CUDA9.2
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2

      cuDNN
      Download cuDNN v7.2.1 (August 7, 2018), for CUDA 9.2

Windows 10下Tensorflow安装(解决CUDA9.0安装失败问题)
https://blog.csdn.net/macunshi/article/details/80747248

Win 10 安装 cuda 莫名安装失败?
https://blog.csdn.net/xgzxgzxgzxgzxgz/article/details/80634969

win10+gtx860m安装CUDA 9.0安装到最后显示NVIDIA安装程序失败。
https://ask.csdn.net/questions/667146

win7 64位+CUDA 9.0+cuDNN v7.0.5 安装
https://blog.csdn.net/shanglianlm/article/details/79404703

TENSORFLOW:检查显卡支持哪个版本的CUDA
https://www.cnblogs.com/yingchuan-hxf/p/7710071.html

我的AI之路(5)–如何选择和正确安装跟Tensorflow版本对应的CUDA和cuDNN版本
https://blog.csdn.net/XCCCCZ/article/details/80385448

Anaconda 镜像使用帮助
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

Windows下安装tensorflow GPU版本报错:OSError: [WinError 126] 找不到指定的模块/Could not find ‘cudart64_90.dll’.
https://blog.csdn.net/wobeatit/article/details/79207196

别人编译好的安装包安装tensorflow
https://github.com/fo40225/tensorflow-windows-wheel/blob/master/1.9.0/py36/GPU/cuda92cudnn71sse2/tensorflow_gpu-1.9.0-cp36-cp36m-win_amd64.whl

Win10 64 位Tensorflow-gpu安装(VS2017+CUDA9.2+cuDNN7.1.4+python3.6.5)
https://blog.csdn.net/wwtor/article/details/80603296

Win10 x64 + CUDA 9.0 + cuDNN v7.1 + TensorFlow GPU 1.7 安装指南
https://www.cnblogs.com/sorex/p/7615185.html

2018年8月4日 下午3:54

POJ1001 Exponentiation【高精度】 - CSDN博客

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
const int MAXN = 130;

int na[MAXN];

string Mul(string a,int b)//计算a*b :这里要确保a>>b 这样才可以发挥出速度优势,也就是说要将大数进行位的分割,之后再计算
{
string ans;
int La = a.size();
//这里没有指定na的类型,但是默认是0,因为我们赋值为0
fill(na,na+MAXN,0);
for(int i = La-1; i >= 0; --i)
na[La-i-1] = a[i] - '0';
int w = 0;
// 高精度的乘法模板
for(int i = 0; i < La; ++i)
{
na[i] = na[i]*b + w;
w = na[i] / 10;
na[i] = na[i] % 10;
}
while(w)
{
na[La++] = w % 10;
w /= 10;
}
La--;
// 清除前导0
while(La >= 0)
ans += na[La--] + '0';
return ans;
}

char s[7];

int main()
{
int N;
while(~scanf("%s %d",s, &N))
{
int pos = 0,num = 0;
for(int i = 0; i < strlen(s); ++i)
{
if(s[i] == '.')
{
pos = (strlen(s)-i-1)*N; //计算浮点数s^N小数点后的位数
}
else
{
num = num*10 + s[i] - '0'; //将浮点数s转变为整数
}
}
string a;
a += '1';
for(int i = 0; i < N; ++i) //计算 num^N
a = Mul(a,num);

int len = a.size();
if(len <= pos) //结果小于 0
{
printf(".");
for(int i = 0; i < pos-len; ++i)
printf("0");
cout << a << endl;
}
else //结果大于 0
{
int j = len-1;
while(a[j]=='0' && j > len-pos-1) //清除小数部分后边的0
j--;
for(int i = 0; i <= j; ++i)
{
if(i == len-pos)
printf(".");
printf("%c",a[i]);
}
printf("\n");
}
}

return 0;
}