我正在寻找生成(在 OpenCV 中)均值为 0 方差为 1 的随机数矩阵(2xN)的最佳解决方案,例如 Matlab 中的函数randn()。
OpenCV 库中有一个randn()
函数,但我不知道如何将参数传递给该函数以生成均值为 0 和方差为 1 的数字。
OpenCV 有一个randn()函数和一个RNG类。下面是您可能想要替换的 Matlab 代码,以及等效的 OpenCV 代码。
MATLAB:
matrix2xN = randn(2,N)
开放式简历:
cv::Mat mean = cv::Mat::zeros(1,1,CV_64FC1);
cv::Mat sigma= cv::Mat::ones(1,1,CV_64FC1);
cv::RNG rng(optional_seed);
cv::Mat matrix2xN(2,N,CV_64FC1);
rng.fill(matrix2xN, cv::RNG::NORMAL, mean, sigma);
或者
cv::Mat mean = cv::Mat::zeros(1,1,CV_64FC1);
cv::Mat sigma= cv::Mat::ones(1,1,CV_64FC1);
cv::randn(matrix2xN, mean, sigma);
在内部,OpenCVrandn()
使用RNG
. 使用的缺点randn()
是您无法控制种子。
如果matrix2xN
上面有多个通道,则每个通道使用不同的平均值/西格玛。在这种情况下,您需要增加 mean 和 sigma 中的行数(或 cols)以匹配 matrix2xN 中的通道数。