implementing FOR LOOP for beginning and end
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
gabriele fadanelli
el 27 de Mzo. de 2020
Respondida: Abhisek Pradhan
el 2 de Abr. de 2020
Hi everybody. I want to implement this code in which I would love to avoid for loop, but most of all I wish I could avoid putting out of the cycle the first and last values of the matrix rows.
freq=2; %just a frequency or a time
t_buckets=[1 5 8 90]; %vector of times upon which I am constructing my "buckets"
t=(1/freq:1/freq:t_buckets(end)); %building a time vector spaced with the frequency up to the last period in t_buckets
w_buck=zeros(length(t_buckets),length(t)); %initialize the matrix for my result, which are, as tu say, increasing vectors from zero up to a value of time then decreasing going to zero up to the next point in t_buckets
w_buck(1,1:freq*t_buckets(1))=1; %need to put this part out of the for loop
w_buck(1,freq*t_buckets(1)+1:freq*t_buckets(1+1))=(t(freq*t_buckets(1)+1:freq*t_buckets(2))-t_buckets(2))/(t_buckets(1)-t_buckets(2));
for i=2:length(t_buckets)-1 %recursive formula to get every row with necessary "bucket" values for times
w_buck(i,freq*t_buckets(i-1):freq*t_buckets(i)-1)=(t(freq*t_buckets(i-1):freq*t_buckets(i)-1)-t_buckets(i-1))/(t_buckets(i)-t_buckets(i-1));
w_buck(i,freq*t_buckets(i))=1;
w_buck(i,freq*t_buckets(i)+1:freq*t_buckets(i+1))=(t(freq*t_buckets(i)+1:freq*t_buckets(i+1))-t_buckets(i+1))/(t_buckets(i)-t_buckets(i+1));
end
%need to put last part out of the for loop otherwiae it doesn t work
w_buck(length(t_buckets),freq*t_buckets(end-1):freq*t_buckets(end)-1)=(t(freq*t_buckets(end-1):freq*t_buckets(end)-1)-t_buckets(end-1))/(t_buckets(end)-t_buckets(end-1));
w_buck(length(t_buckets),freq*t_buckets(length(t_buckets)))=1;
Now what I wish to do is first try to put everything in the same formula (i.e. the for loop in example) and then try to avoid this loop if possible.
Thanks to everyone who'll help me in simplifying
2 comentarios
Guillaume
el 27 de Mzo. de 2020
Can you explain what that code does? It's not very readable and if we first have to try to understand it, there's less chance you'll have an answer.
Writing comments in your code is essential!
Respuesta aceptada
Abhisek Pradhan
el 2 de Abr. de 2020
Use of FOR loop can be avoided in most of the cases using vectorization.
Refer the following link which has few examples on how to do vectorization.
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!