Store polyfit information of for loop in matrix

3 次查看(过去 30 天)
Hi, I have a graph with x = 6309x1 double and y = 6309x1 double.
I want to fit different increasing areas of the graph with polyfit: polyfit area 1-40; polyfit area 1-80; polyfit area 1-120; ........polyfit area 1-6280 (floor(length(x)/40)*40).
These are 157 (floor(length(x)/40)) different areas and I want to store the fitted y-Values in a 157x16280 (not used rows are gonna be replaced by zero)
How can I achieve this in a for loop? I tried the following, but it doesn't work and I cant fit 157 areas manually
yp = zeros(floor(length(xorg)/40)*40,1);
for i = 40:40:length(xorg)
for j = 1:floor(length(xorg)/40)
yp(:,j) = polyval((polyfit(xorg(1:i,1),yorg(1:i,1),9)), xorg(1:i,1));
end
end

回答(2 个)

Jan
Jan 2022-4-12
Maybe:
n = floor(length(xorg) / 40) * 40;
yp = zeros(n, 1);
for j = 1:floor(length(xorg)/40)
m = j * 40;
yp(:, j) = polyval(polyfit(xorg(1:m), yorg(1:m), 9), xorg(1:m, 1));
end

KSSV
KSSV 2022-4-12
You may save them into a cell as well.
yp = cell(floor(length(xorg)/40)*40,1);
for i = 40:40:length(xorg)
for j = 1:floor(length(xorg)/40)
yp{j} = polyval((polyfit(xorg(1:i,1),yorg(1:i,1),9)), xorg(1:i,1));
end
end

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by