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

  • Thread starter Thread starter ShaneXavier
  • Start date Start date
  • Tags Tags
    Data Linearly
Click For Summary
To produce linearly and logarithmically spaced arrays in C, a for loop is typically used alongside an initial value and an increment. For linear spacing, an array is filled by incrementing a starting value by a fixed linear step size. For logarithmic spacing, the process involves calculating the step size based on the logarithmic scale. In the example provided, to create 12 logarithmically distributed samples starting from log(2) to 10, the step size is determined using the formula (10 - log(2))/12, although this approach can be confusing. The correct implementation involves initializing the first element of the array with log(2) and calculating the step size using the formula pow(10.0 / array[0], 1./11.) to ensure proper logarithmic spacing. The loop then populates the array by multiplying the previous value by the calculated step size. This method effectively mimics MATLAB's linspace and logspace functions in C.
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?
 
Technology 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;
 
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...

Similar threads

  • · Replies 2 ·
Replies
2
Views
1K
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 25 ·
Replies
25
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 14 ·
Replies
14
Views
3K
  • · Replies 5 ·
Replies
5
Views
4K
Replies
2
Views
2K
  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 4 ·
Replies
4
Views
1K