How can I produce linearly and logarithmically spaced arrays in C?

  • Thread starter Thread starter ShaneXavier
  • Start date Start date
  • Tags Tags
    Data Linearly
Join the discussion
Registration is free. Start your own thread to ask a follow-up.
3 replies · 9K views
ShaneXavier
Messages
6
Reaction score
0
For the use of linear and logarithmic interpolation, how can I produce linearly and logarithmically spaced arrays in C? I know in Matlab the code is

A = linspace(a,b,c) or A = logspace(a,b,c)

but how can I do this in C?
 
Physics news on Phys.org
ShaneXavier said:
how can I produce linearly and logarithmically spaced arrays in C?
You use a for loop, an initial value, and you increment by the the linear or log value you want, then place those values in the array (which is basically what MATLAB is doing in the background)

basically some variant of:
int spaced_array[NUMVALUES];
int i=initial linear/log value;
for (j=0; j<NUMVALUES; j++)
{
spaced_array[j]=i;
i+=linear/log increment;
}
 
Last edited:
Thanks for your help. I am having difficulties in understanding something else. If I have an initial value say log(2) and my final value of 10, and I want 12 logarithmically distributed samples, do I say is my step size going to be (10 - log(2))/12? I am kind of confused about how to implement this.

And I assure you, this is not homework.
 
float array[12];
array[0] = log(2.0);
float step = pow(10.0 / array[0], 1./11.);
for(j=0; j<11; j++)
array[j+1] = array[j] * step;