Storing data for "for loop"
2 views (last 30 days)
Show older comments
Khang Nguyen
on 21 May 2019
Commented: Star Strider
on 21 May 2019
Hi everyone,
for my L0 = [1 2 3 4 5], L10 = [2 3 4 5 6] L20 = [0 9 2 3 4] .... L200 = [2 3 4 5 6] (Up to 20 L values, just type random L for asking)
and x = [0:1:4]
I want to perform a polyfit function for 6th polynomial order for each L, with same x, but i do not want to each time type "polyfit(x,L0,6)" and then "polyfit(x,L20,6)
My question is : How can I make a for loop for this
I have tried L = [L0 L10 L20 ... L200],
but this way, it will store all values in one vector.
Please help ASAP !!
Thanks in advance
0 Comments
Accepted Answer
Star Strider
on 21 May 2019
Try something like this:
L0 = [1 2 3 4 5];
L10 = [2 3 4 5 6];
L20 = [0 9 2 3 4];
L = [L0; L10; L20];
x = 0:4;
n = size(L,2)-2;
for k = 1:size(L,1)
p(k,:) = polyfit(x,L(k,:),n);
end
This creates a matrix of row vectors in ‘L’. Note that I set ‘n’ to be 2 less than the vector lengths. A 6-order polynomial might be appropriate for your actual data, although it will crash here. (Please re-consider fitting a 6-order polynomial anyway.)
2 Comments
More Answers (2)
Josh
on 21 May 2019
You can store your L variables either as rows in a matrix:
% Create L matrix with a different L value in each row (I only put in three rows for simplicity)
L = [1, 2, 3, 4, 5; 2, 3, 4, 5, 6; 0, 9, 2, 3, 4];
% Create x value
x = 0:4;
% Create a result matrix; this will store the output of polyfit as separate rows:
order = 6;
results = zeros(size(L, 1), order + 1);
% Calculate the results
for i = 1 : size(L, 1)
results(i, :) = polyfit(x, L(i, :), order);
end
% The syntax L(i, :) returns the entire ith row of the matrix
Geoff Hayes
on 21 May 2019
Khang - don't create variables just for the sake of having variables. If all of your L arrays are of the same dimension, then just store them in a (for example) 20x5 matrix where each row corresponds to one of your (no longer needed) L variables. You would then iterate over each row and call polyfit on that row. For example,
for k=1:size(myData,1)
[p,S,mu] = polyfit(x,myData(k,:),6);
% store the results in an appropriately sized output matrix
end
where myData is your 20x5 array. If not all L arrays are of the same dimension, then just store all in a cell array.
0 Comments
See Also
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!