一 :噪音、高斯随机变量的matlab函数
(1) 生成多元高斯随机变量的matlab函数:mvnrnd
(2) 添加高斯白噪声的matlab函数:awgn
(3) 图像加Salt & Pepper noise, Gaussian noise, Poisson noise怎么加?matlab函数imnoise能实现这个功能,见我的电脑other\matlab 2007a\work\function\imnoise_YaleB,注意点:imnoise函数有说明,The mean and variance parameters for 'gaussian', 'localvar', and 'speckle' noise types are always specified as if the image were of class double in the range [0, 1]. 当然也可以用uint8,有显示结果可知,如果直接用double型的0到255之间的数值是有问题的。
但对于LFW,看其最小的大概0,最大的大概0.02,怎么恢复到0到255。Haiqing Li讲不能恢复,因为你不知原始图像的最小值和最大值。当然可以用fea_original = (fea_original-min_value)/(max_value-min_value);得到一个初步结果,这样既相当于将最小值映射到0,最大值映射到1
(4) 北航图像课件:课件\课件7、8、9章(2012-6-12)\解压后文件\第八章小波变换课件-5.ppt的P5,就是通过randn函数加入高斯噪音
(5) 文章:Sparsity preserving projections with applications to face recognition,该文5.1.1节有一句:Gaussian white noise with standard deviation 0.1。我的问题是高斯白噪声的均值是多少呢,是零吗?你们是不是用matlab函数 randn(0,0.1) 这样实现的?搜索gmail, 关键词"乔老师",20100703回复: 高斯白噪声的均值为零,具体怎么加应该有很多方法,例如你说的用randn。
(6) CVPR 2020 Self-training with Noisy Student improves ImageNet classification: To noise the student, we use RandAugment data augmentation [18], dropout [75] and stochastic depth [37] during its training.

二:
2.1 
图像显示imshow,imagesc
下面代码摘录至蔡登老师主页http://www.zjucadcg.cn/dengcai/Data/Yale/images.html
The face image can be displayed in matlab with the following command lines:

%===========================================
faceW = 32;
faceH = 32;
numPerLine = 11;
ShowLine = 2;

Y = zeros(faceH*ShowLine,faceW*numPerLine);
for i=0:ShowLine-1
   for j=0:numPerLine-1
     Y(i*faceH+1:(i+1)*faceH,j*faceW+1:(j+1)*faceW) = reshape(fea(i*numPerLine+j+1,:),[faceH,faceW]);
   end
end

imagesc(Y);colormap(gray);
%===========================================

先将fea都除以256imagesc和imshow结果没有影响

2.2照片的处理(Matlab命令)

(1)A=imread('1.JPG');%见我的matlab教材P33
% imshow(rgb2gray(A));%将彩色图片转成黑白的
B = imresize(A,[250 250]);
imwrite(B,'2.JPG');

(2) imshow的问题:利用Ran He给我的FRGC/dataset10, 命令:load ImgData;imshow(reshape(data(:,20),64,64))。问题:产生不了人脸。
原因:是double型,要变成整型。
解决方案1:imshow(reshape(data(:,20),64,64),[])。
解决方案2:imshow(uint8(reshape(data(:,20),64,64)))。
注意点:不要将data都变成整型,因为后续处理还是要用double型的。
This is under the help of Zhenhua Chai。

20130410问Ran He, FRGC/dataset10,每个原始图片是64*64,变成32*32,imresize函数要不要做特别设置,他讲他都用默认的设置
图像imshow出来后,可以通过impixelinfo命令来看具体的像素数值


imshow画彩色图片:见本机cifar-10-matlab\cifar-10-batches-mat

三:eigs和eig

eigs:Largest eigenvalues and eigenvectors of matrix. 只能求最大的六个特征值及对应的特征向量
eig: Eigenvalues and eigenvectors. 能求所有特征值和特征向量
问题:求解WPrime相对DPrime最大的几个特征值对应的特征向量
仿照Deng Cai的LDA版本“version 3.0 --Dec/2011”的line 230-235和line 244-246

 [eigvector, eigvalue] = eig(WPrime,DPrime);
 eigvalue = diag(eigvalue);

 [junk, index] = sort(-eigvalue);
 eigvalue = eigvalue(index);
 eigvector = eigvector(:,index);

for i = 1:size(eigvector,2)
    eigvector(:,i) = eigvector(:,i)./norm(eigvector(:,i));
end
注意点:1、eigvalue = diag(eigvalue);这句不能省,因为eigvalue本身是对角矩阵。2、eigvector要归一化

四:plot函数
电脑目录:\Spectral Regression\kernel\show_time\Isolet.m 直接运行有问题,解决方案:画出的图点击Edit -> Axes properties (注意不是选中Figure properties)-> More properties->Xlim下面 XTick,将1.5,2.5和3.5删除就可以了

plot(d,linearKernel,'b-*','LineWidth',2,'MarkerSize',18); %通过MarkerSize'来调整marker的大小


五:杂七杂八
class: 类型
a=12345.6789 % 给变量 a 赋数值标量
class(a) % 对变量 a 的类别进行判断

MATLAB中如何将数据以分数的形式显示出来:FORMAT RAT
for i=1:6
    x(i) = 1/i;
end
format rat;%使用分数来表示数值,默认格式是short;rat(x):将实数转化成分数表示;rats(x):将实数化为多项式分数展开
disp(x)

FIND:找到非零值和序号
a = [1 -2 3; 4 5 -4;5 -6 7];
a<0的结果是:
0     1     0
0     0     1
0     1     0
ind = find(X)%ind = find(X) locates all nonzero elements of array X, and returns the linear indices of those elements in vector ind. If X is a row vector, then ind is a row vector; otherwise, ind is a column vector
故find(a<0)的结果是
4
6
8
因为matlab是按列存储的
Y(find(Y==-1)) = 1;%目的:将Y中为-1的值赋值为1

:A = [0/0 0/0];
find(A==NaN)结果是空矩阵
z = find(isnan(A))结果是1 2,找出了NaN所在的位置

随机相关
任务:AR数据,每类四个样本,总共120类。所有样本按第一类、第二类的顺序依次排列,想从中随机挑50个样本,每个样本来自不同的类,如何实现?
方法:b = randperm(120); b = b(1:50); b = (b-1)*4;%the start position of each class
 b = b+randi(4,1,50); % randi is recommended by Libing Wang

如何编程实现随机正交矩阵?见哈希论文ITQ编程实现,先生成随机矩阵,再SVD分解,取U矩阵即可