Azzera filtri
Azzera filtri

store the output of a for loop in an array

1 visualizzazione (ultimi 30 giorni)
Yassine
Yassine il 15 Mag 2012
Hi everyone... I want to store the output of 'q' in an array from the following code:
F= @(x) (cos(x))./sqrt(1+sin(x));
for n=0:0.1:pi/2
q = quad(F,0,n)
end
I tried to use q(n) instead of q but it gives me an error. Thanks for your time and help!

Risposte (3)

Oleg Komarov
Oleg Komarov il 15 Mag 2012
I did not preallocate (up to you)
F = @(x) (cos(x))./sqrt(1+sin(x));
n = 0:0.1:pi/2;
for ii = 1:numel(n)
q(ii) = quad(F,0,n(ii))
end
You were not able to use q(n) directly because n in that case should indicate which position in q the result should be allocated to. There's no such a thing as position 0.1 and the counting reference starts from 1, thus no position 0 either.
Formally stating, an array can be indexed with positive integer values: 1,2,... etc

Thomas
Thomas il 15 Mag 2012
try
F= @(x) (cos(x))./sqrt(1+sin(x));
count=1;
for n=0:0.1:pi/2
q (count)= quad(F,0,n);
count=count+1;
end
q

Andrei Bobrov
Andrei Bobrov il 15 Mag 2012
q = arrayfun(@(n)quad(@(x)cos(x)./sqrt(1+sin(x)),0,n),0:0.1:pi/2);

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by