Προς το περιεχόμενο

Pollaplasiasmos mhtrwwn/MATLAB


MauriDalia

Προτεινόμενες αναρτήσεις

Gia sas!!!!:-) Gia ton pollaplasiasmo 2 pinakwn iswn diastasewn mou exei zhththei na xrhsimopoihsw ton algorithmo Strassen o opoios pernei san eisodo ektos apo ta mhtrwa A,B kai enan akeraio k pou einai ena katwfli pou parexei ston xrhsth thn dunatothta na na orizei to elaxisto megethos twn mhtrwwn apo to opoio kai katw tha ginete o pollaplasiasmos kanonika sthn MATLAB me thn mtimes kai oxi me strassen.O kwdikas gia thn strassen einai

 

function C = strassenw(A, B, nmin)

n = length(A);

if n ~= 2^( log2(n) )

error('The matrix dimension must be a power of 2.')

end

 

if n <= nmin

C = A*B;

else

m = n/2; i = 1:m; j = m+1:n;

 

S1 = A(j,i) + A(j,j);

S2 = S1 - A(i,i);

S3 = A(i,i) - A(j,i);

S4 = A(i,j) - S2;

S5 = B(i,j) - B(i,i);

S6 = B(j,j) - S5;

S7 = B(j,j) - B(i,j);

S8 = S6 - B(j,i);

 

M1 = strassenw( S2, S6, nmin);

M2 = strassenw( A(i,i), B(i,i), nmin);

M3 = strassenw( A(i,j), B(j,i), nmin);

M4 = strassenw( S3, S7, nmin);

M5 = strassenw( S1, S5, nmin);

M6 = strassenw( S4, B(j,j), nmin);

M7 = strassenw( A(j,j), S8, nmin);

 

T1 = M1 + M2;

T2 = T1 + M4;

 

C = [ M2+M3 T1+M5+M6; T2-M7 T2+M5 ];

 

end

 

kai to katwfli mu thelw na pernei times 8,16,32,64 kai na metraw ton xrono ekteleshs gia mhtrwa A kai A me diastaseis 64,128,256,512,1024.Opote opws fenete parakatw

thelw enan xrono gia kathe periptrwsh opote afu to k pernei 4 times kai exw 5 megethi mhtrwwn prospathw na valw tus xronous se enan pinaka time_avers 5x4

 

function [time_avers]=Pollaplasiasmos

 

% To dianysma time_avers krataei tous mesous orous tis sygkekrimenis

% praksis gia oles tis times tou n (=64,128,256,512,1024).

 

time_avers=[];

time_avers(1:5,1:4)=0;

max=1024;

X=rand(max); %Arxikoi pinakes pou exune to max megethos kai apo tus opoious

Y=rand(max); %pairnw tous A,B

epanalipseis=10;

praxi(1:epanalipseis)=ones; %arxikopoihsh tou dianusmatos pou tha krataei ton xronos ths 1hs praksis me asus

m=1;

f=1;

for t=3:6

for k=2^t

for j=6:10

for n=2^j

A=X(1:max/n:max,1:max/n:max);

B=Y(1:max/n:max,1:max/n:max);

C=strassenw(A,B,k);

for i=1:epanalipseis

tic

C=strassenw(A,B,k);

praxi(i)=toc;

end

q=sum(praxi);

time_avers(m,f) = q/epanalipseis;

f=f+1;

epanalipseis=epanalipseis-2;

end

end

m=m+1;

end

end

time_avers

 

omws mu vgenune mhdenikoi xronoi:(

kai kapou mu leei pws diairw me 0??Kamia idea???Exw pelagwsei.

kai kati allo kserei kaneis pws apo dipli akribeia sthn matlab tha anaparistw mhtrwa se moni Akribeia???Sygnwmh an sas kourasa:fear:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...