Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

What can be the vectorization of this code?

1 Ansicht (letzte 30 Tage)
Abeera Tariq
Abeera Tariq am 18 Apr. 2015
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
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 Kommentare
Abeera Tariq
Abeera Tariq am 19 Apr. 2015
Bearbeitet: Abeera Tariq am 19 Apr. 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 am 19 Apr. 2015
Bearbeitet: Abeera Tariq am 19 Apr. 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;

Antworten (0)

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by