Saving output of for loop after each iteration (for a function)
Afficher commentaires plus anciens
y = 0:0.05:1;
u= 2*y-(2*y.^3)+y.^4;
a = 0:0.01:1;
b = 4000;
Carray=zeros(1,101)
for i=1:size(a)
c=A_function(y,u,b,a(i));
Carray(i)=c;
end
I want to run the function 'c' for all values of 'a'
and I want to store value of 'c' for each 'a'
The error i get is "Unable to perform assignment because the left and right sides have a different number of elements"
Can someone please let me know what I am doing wrong?
Thanks
Réponses (2)
Sulaymon Eshkabilov
le 1 Avr 2021
Modifié(e) : Sulaymon Eshkabilov
le 1 Avr 2021
Here is the corrected code of yours:
y = 0:0.05:1;
u= 2*y-(2*y.^3)+y.^4;
a = 0:0.01:1;
b = 4000;
C=zeros(numel(a),numel(u));
for ii=1:size(a)
C(ii,:)=A_function(y,u,b,a(ii));
end
3 commentaires
JD
le 1 Avr 2021
JD
le 1 Avr 2021
%{
C=zeros(numel(a),numel(u));
for ii=1:size(a)
%}
I agree with the first line but not the second. Before looking at the output of the code below, how many lines of text does it display?
a = 0:0.1:1;
for k = 1:size(a)
fprintf("k is %d\n", k)
end
Now compare this with using numel instead of size.
a = 0:0.1:1;
for k = 1:numel(a)
fprintf("k is %d\n", k)
end
Why the difference in behavior? When any of the inputs to the colon function or : operator is non-scalar and non-empty, MATLAB will just use the first element of that input.
sz = size(a)
v = 1:sz % equivalent to 1:sz(1)
While your code would have worked for a column vector, the numel approach works in general to allow you to loop through all the elements in an array.
Image Analyst
le 1 Avr 2021
Try this:
y = 0:0.05:1;
u = 2*y-(2*y.^3)+y.^4;
a = 0:0.01:1;
b = 4000;
rows = length(a)
columns = 101;
Carray = zeros(rows, columns);
for row = 1 : rows
resultVector = A_function(y, u, b, a(row));
Carray(row, :) = resultVector;
end
function c = A_function(y, u, b, aValue)
c = randi(9, 1, 101); % Whatever it may be...
end
Obviously replace the A_function with your actual function that returns a vector. Carray will not be all zeros.
8 commentaires
JD
le 1 Avr 2021
JD
le 1 Avr 2021
Image Analyst
le 1 Avr 2021
My code runs fine with no errors. If you have errors it's because you replaced the A_function with the actual function, and you did not supply that to us. Please attach it.
When you call A_function you pass it a(i) which is a single value, not a vector. That is fine, however, you cannot define the function like this:
function c = A_function(y, u, b, a(i))
because it will throw an error. The 4th argument needs to be a simple variable name that represents a(i) and I called it aValue.
Image Analyst
le 1 Avr 2021
Unrecognized function or variable 'alp'.
Error in test7>OS_Eigen2D (line 74)
ak2=alp^2;
Error in test7 (line 20)
resultVector = OS_Eigen2D(y, u, b, a(row));
What is alp?
JD
le 1 Avr 2021
JD
le 1 Avr 2021
Image Analyst
le 2 Avr 2021
Sorry, I didn't get a chance last night, but I guess it's past the homework deadline so it doesn't matter at this point.
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!