x = linspace(0, 2*pi, 400);
y = cos(x) + 0.3 * rand(1, length(x));
while rSQ < requiredRSquared && loopCounter < maxIterations
fprintf('On iteration %d\n', loopCounter);
coefficients = polyfit(x,y,currentOrder);
yFitted = polyval(coefficients, x);
rSQTop = (yFitted - y).^2;
rSQBot = (yFitted - yAVG).^2;
rSQ = 1 - (sum(rSQTop) / sum(rSQBot));
message = sprintf('On iteration %d rSQ = %f. Order = %d', loopCounter, rSQ, currentOrder);
if rSQ > requiredRSquared
p2 = plot(x, yFitted, 'g-', 'LineWidth', 5);
p2 = plot(x, yFitted, 'r-', 'LineWidth', 5);
currentOrder = currentOrder + 1;
title(message, 'FontSize', 18);
g.WindowState = 'maximized';
promptMessage = sprintf('Showing iteration %d.\nDo you want to Continue processing,\nor Quit processing?', loopCounter);
titleBarCaption = 'Continue?';
buttonText = questdlg(promptMessage, titleBarCaption, 'Continue', 'Quit', 'Continue');
if contains(buttonText, 'Quit', 'IgnoreCase', true)
loopCounter = loopCounter + 1;
if rSQ < requiredRSquared