What can be the vectorization of this code?

I am trying to vectorize this code.. what can be the vectorization of this code with input data
function hat_y=omp(s,T,N)
Size=size(T);
M=Size(1);
hat_y=zeros(1,N);
Aug_t=[];
r_n=s;
for times=1:M;
for col=1:N;
product(col)=abs(T(:,col)'*r_n);
end
[val,pos]=max(product);
Aug_t=[Aug_t,T(:,pos)];
T(:,pos)=zeros(M,1);
aug_y=(Aug_t'*Aug_t)^(-1)*Aug_t'*s;
r_n=s-Aug_t*aug_y;
pos_array(times)=pos;
if (abs(aug_y(end))^2/norm(aug_y)<0.05)
break;
end
end
hat_y(pos_array)=aug_y;

5 comentarios

Geoff Hayes
Geoff Hayes el 18 de Abr. de 2015
Abeera - why do you wan to vectorize this function? Is the performance too slow (only takes a couple of seconds for me)?
James Tursa
James Tursa el 19 de Abr. de 2015
Is this yet another function that you are going to implement on a GPU?
Abeera Tariq
Abeera Tariq el 19 de Abr. de 2015
Editada: Abeera Tariq el 19 de Abr. de 2015
@James Tursa I had the impression that the last algorithm was slow because of its inherent design, not of the implementation. but I was not convinced this will lead to great improvement in performance in Matlab. and left the other one nd started working on this..
Abeera Tariq
Abeera Tariq el 19 de Abr. de 2015
Editada: Abeera Tariq el 19 de Abr. de 2015
Geoff I need to implement this on GPU It is the sub part of the code my whole code has many loops inside loops like
for times=1:M;
for col=1:N;
product(col)=abs(T(:,col)'*r_n);
end
.........................
end
There are many loops in the major function which call this function.. I tried this version of algorithm on gpu but it tool longer time bcoz of loops .. so now em trying to remove them ..
Abeera Tariq
Abeera Tariq el 19 de Abr. de 2015
Editada: Abeera Tariq el 19 de Abr. de 2015
till now i did this
function hat_y=omp(s,T,N)
Size=size(T);
M=Size(1);
hat_y=zeros(1,N);
Aug_t=[];
r_n=s;
for times=1:M;
product(1:N)=abs(T(:,1:N).'*r_n);
[val,pos]=max(product);
Aug_t=[Aug_t,T(:,pos)];
T(:,pos)=zeros(M,1);
aug_y=(Aug_t'*Aug_t)^(-1)*Aug_t'*s;
r_n=s-Aug_t*aug_y;
pos_array(times)=pos;
end
hat_y(pos_array)=aug_y;

Respuestas (0)

La pregunta está cerrada.

Etiquetas

Preguntada:

el 18 de Abr. de 2015

Cerrada:

el 20 de Ag. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by