Based on what you share, this is the best answer I can give.
I see two methods:
Instead of making N polynomials (if N is the number of ribs), you could fit a curve for all the ribs at once. Of course, for that, you will need to have a common (0,0) coordinate, in other word, stack them one over the other on your image. Since you are able to make a distinction between the ribs, that means that you can already isolate them, so that shouldn't be an issue.
Or if you prefer, you can generate a new cloud of points with the polynomials you already found.
coeffs = [0.0010126, -1.5981, 1074.8; 0.0024871, -3.3327, 1866.3];
x = linspace(0,1000,1000); % fictives points
merged_x = [x x];
merged_y = [ polyval(coeffs(1,:), x), polyval(coeffs(2,:),x)];
coeffs_final = polyfit(merged_x, merged_y, 2);
plot(polyval(coeffs(1,:), x), 'red')
plot(polyval(coeffs(2,:), x), 'blue')
plot(polyval(coeffs_final, x), 'black')
You could fit 3 polynomials to find the values of the coefficient you already have found. If we take the first polynomial you provided, then
$a_2=0.0010126$ $a_1=-1.5981$ $a_0=1074.8$
You could fit a curve that would follow all $a_2$, another for all $a_1$, and same for all $a_0$. This would yield 9 new coefficients (3 polynomials) that will allow you to find your polynomials based on the rib position.
Here's an example
coeffs = [ 0.0010126 -1.5981 1074.8;
0.0024871 -3.3327 1866.3;
0.002662 -3.7067 1631.4;
0.0025574 -4.5129 2148.4;
0.002114 -3.3457 2195.6;
0.0015383 -2.6023 1682.9 ];
x = linspace(0,1000,1000); %fictive value
ribs_count = size(coeffs, 1);
a2 = polyfit(1:ribs_count, coeffs(:,1)', 2); % careful to the ' symbol that transpose the column into a row
a1 = polyfit(1:ribs_count, coeffs(:,2)', 2);
a0 = polyfit(1:ribs_count, coeffs(:,3)', 2);
new_coeffs = [polyval(a2,rib), polyval(a1,rib), polyval(a0,rib)];
plot(x, polyval(new_coeffs, x), 'red')
plot(x, polyval(coeffs(rib,:), x), 'blue')