English 中文(简体)
Generating random noise in matlab
原标题:

When I add Gaussian noise to an array shouldnt the histogram be Gaussian? Although the noise is random, the distribution should be gaussian right? That is not what I get.

A=zeros(10);
A=imnoise(A, gaussian );
imhist(A)
问题回答

Two things could be going on:

  1. You don t have enough of a sample size, or

  2. The default mean of imnoise with gaussian distribution is 0, meaning you re only seeing the right half of the bell curve.

Try

imhist(imnoise(zeros(1000),  gaussian , 0.5));

This is what your code is doing:

A = zeros(10);

mu = 0; sd = 0.1;                 %# mean, std dev
B = A + randn(size(A))*sd + mu;   %# add gaussian noise

B = max(0,min(B,1));              %# make sure that 0 <= B <= 1

imhist(B)                         %# intensities histogram

can you see where the problem is? (Hint: RANDN returns number ~N(0,1), thus the resulting added noise is ~N(mu,sd))


Perhaps what you are trying to do is:

hist( randn(1000,1) )

histogram

imnoise() is a function that can be applied to images, not plain arrays.
Maybe you can look into the randn() function, instead.

You might not see a bell-curve with a sampling frame of only 10.

See the central limit theorem.

http://en.wikipedia.org/wiki/Central_limit_theorem

I would try increasing the sampling frame to something much larger.


Reference:

Law of Large Numbers

http://en.wikipedia.org/wiki/Law_of_large_numbers





相关问题
MATLAB Solving equations problem

I want to solve these equations using MATLAB and I am sure there is a non zero solution. The equations are: 0.7071*x + 0.7071*z = x -0.5*x + 0.7071*y + 0.5*z = y -0.5*x - 0.7071*y +...

Difference between MATLAB s matrix notations

How do you read the following MATLAB codes? #1 K>> [p,d]=eig(A) // Not sure about the syntax. p = 0.5257 -0.8507 -0.8507 -0.5257 d = ...

preventing data from being freed when vector goes out of scope

Is there a way to transfer ownership of the data contained in a std::vector (pointed to by, say T*data) into another construct, preventing having "data" become a dangling pointer after the vector goes ...

Divide two polynomials using MATLAB

I want to divide p(x) by q(x) given that: p(x)=-5x^4+3x^2-6x q(x)=x^2+1 I tried: p=inline( -5*(x^4)+3*(x^2) , x ) p = Inline function: p(x) = -5*(x^4)+3*(x^2) q=inline( x^2+1 , x ) q = ...

matlab deals with Fibbonacci

The Fibonacci series is given as follows: 1, 2, 3, 5, 8, 13, 21, ... How can I write a script which calculates and prints the n-th Fibonacci term (for n>2), where n is inputed by the user. This ...

How do I plot lines between all points in a vector?

I have a vector containing some points in 2-D space. I want MATLAB to plot these points with lines drawn from every point to every other point. Basically, I want a graph with all vertices connected. ...

How do I create a string using a loop variable in MATLAB?

I have a loop like this: for i=1:no %some calculations fid = fopen( c:\out.txt , wt ); %write something to the file fclose(fid); end I want data to be written to different files like ...

热门标签