MATLAB How to Convert Matlab Gaussian Cone Code to C++?

Click For Summary
The discussion centers on converting a MATLAB function that generates a Gaussian cone shape using random numbers into C++. Key points include the need for a graphics library in C++ since the standard does not support graphics natively, with Qt being recommended for its dual licensing options. The conversation also highlights the advantages of C++11 and later versions for random number generation, suggesting that users utilize the standard library's normal distribution capabilities. Additionally, it is noted that the MATLAB code could be simplified by removing unnecessary commands like "clear all," which do not impact the function's workspace. A link to MATLAB's tool for generating C code from MATLAB code is provided as a resource for the conversion process.
MAKK
Messages
4
Reaction score
0
anyone help me to convert this sample code of Gaussian Cone shape of random number code in Matlab into C++

Matlab:
function GaussianCone
    clear all; clc;

    mx=10000; my=mx; mz=mx;

    z=[1:1:mz]';

    sigma=0.01; R=0.5; mu=0;
    sigmax=sigma+R*z;
    sigmay=sigma+R*z;

    x=zeros(mx,1); y=zeros(my,1);

    for i=1:mx
        x(i)=normrnd(mu, sigmax(i)); 
    end

    for j=1:my
        y(j)=normrnd(mu, sigmay(j));
    end

    size(x)
    size(y)
    size(z)

    plot3(x,z,y,'.r')
end
 
Last edited by a moderator:
Physics news on Phys.org
You have graphics in your code, so you're going to need some kind of c++ graphics library to make the conversion complete. The c++ standard itself does not address graphics. I'd suggest learning to use Qt, which is dual licensed (commercial and open source, with some restrictions on open source usage).

You also have normally distributed random numbers in your code. C++11 (and later releases) has very nice random number generation capabilities. You'll want to take advantage of those. For example, see http://en.cppreference.com/w/cpp/numeric/random/normal_distribution.
 
Your code could be simplified in MATLAB first. There is no reason to ever issue a clear all command as the first line of a function in MATLAB, because there is nothing to clear in the function's workspace except any input arguments (when passed).

Code:
function GaussianCone

mx = 10000;
my = mx;
mz = mx;
z = (1:mz)';
sigma = 0.01;
R = 0.5;
mu = 0;
sigmax = sigma+R*z;
sigmay = sigma+R*z;
x = normrnd(mu,sigmax);
y = normrnd(mu,sigmay);
plot3(x,z,y,'.r')
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
1K
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
4K
Replies
1
Views
2K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 11 ·
Replies
11
Views
5K
  • · Replies 9 ·
Replies
9
Views
3K
  • · Replies 41 ·
2
Replies
41
Views
10K
  • · Replies 3 ·
Replies
3
Views
5K
  • · Replies 3 ·
Replies
3
Views
4K