6

我正在寻找生成(在 OpenCV 中)均值为 0 方差为 1 的随机数矩阵(2xN)的最佳解决方案,例如 Matlab 中的函数randn()

OpenCV 库中有一个randn()函数,但我不知道如何将参数传递给该函数以生成均值为 0 和方差为 1 的数字。

4

1 回答 1

12

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 中的通道数。

于 2013-09-27T03:54:54.713 回答