|
Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη. Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Νέα!
Show Posts
|
Pages: 1 [2] 3 4 ... 11
|
17
|
Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών / Ψηφιακά Φίλτρα / Re: [Ψηφιακά Φίλτρα] Παλιά Θέματα
|
on: July 05, 2020, 16:33:09 pm
|
Καλησπερα συναδελφοι
εχει καποιος τις λύσεις των 2 τελευταιων quiz ΄?
ευχαριστωω
Επίσης για το 3ο quiz, η λύση ενός φίλου. Ερώτηση 2% Step1: split output to top and bottom function [yt, yb] = step1( x, w )
% length of x signal n = length(x);
% Check if n is a power of 2 if mod(n,2) ~= 0 disp('The signal x must have a length equal to a power of 2. \n') return else % k ranges from 0 to n - 1 k = (0:n-1)';
% Split output top(yt) and bottom(yb) initiating both parts with 0s yb = zeros(n/2,1); yt = zeros(n/2,1);
% Construct the 2-part output for j=0:n/2-1 yt(j+1) = sum(w(n,j*k) .* x(k+1)); end for j=0:n/2-1 yb(j+1) = sum(w(n,(j+n/2)*k) .* x(k+1)); end y = [yt ; yb]; end end
function [ybe, ybo, yte, yto] = step2( x, w ) % split each output to even and odd n = length(x);
% k ranges from 0 to n/2 -1 k = (0:n/2-1)';
% Initiation of 4-part output with 0s ybe = zeros(n/2,1); ybo = zeros(n/2,1); yte = zeros(n/2,1); yto = zeros(n/2,1);
for j=0:n/2-1 yte(j+1) = sum(w(n/2,j*k) .* x(2*k+1)); yto(j+1) = w(n,j)*sum(w(n/2,j*k) .* x(2*k+2)); end for j=0:n/2-1 ybe(j+1) = sum(w(n/2,(j+n/2)*k) .* x(2*k+1)); ybo(j+1) = w(n,j+n/2)*sum(w(n/2,(j+n/2)*k) .* x(2*k+2)); end
y = [yte + yto ; ybe + ybo];
end
function [xk1, xk2] = step3( x, w ) % apply w identity and finish the proof with % y = [ xk1+xk2; xk1-xk2 ]; n = length(x); % Initiation of output xk1 = zeros(n/2,1); xk2 = zeros(n/2,1); % k ranges from 0 to n/2 -1 k = (0:n/2-1)';
for j=0:n/2-1 xk1(j+1) = sum(w(n/2,j*k) .* x(2*k+1)); xk2(j+1) = w(n,j)*sum(w(n/2,j*k) .* x(2*k+2)); end
y = [xk1+xk2; xk1-xk2];
end
Ερώτηση 2function [y, flop] = rec_fast_fourier(x)
% Initiate number of flops flop = 0;
% n = length of signal to be transformed n = length(x);
% root of unity function handle w = @(n,k) exp(-2*k*pi*1i/n);
% if n = 1 then the fast fourier transform cannot be broken into smaller parts % so its output is going to be an element of the original signal x. if n==1 y = x; else k = (0:n/2-1)'; [yt,flopt] = rec_fast_fourier(x(2*k+1)); [yb,flopb] = rec_fast_fourier(x(2*k+2)); yb = w(n,k).*yb; y = [yt+yb ; yt-yb]; flop = flopt + flopb + 6*n/2 + 2*n ; end end
|
|
|
18
|
Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών / Ψηφιακά Φίλτρα / Re: [Ψηφιακά Φίλτρα] Παλιά Θέματα
|
on: July 05, 2020, 16:19:43 pm
|
Καλησπερα συναδελφοι
εχει καποιος τις λύσεις των 2 τελευταιων quiz ΄?
ευχαριστωω
Η λύση αυτή για το 4ο quiz ενώ τα παιδιά έλεγαν οτι έδινε 0.63/1, πλέον δίνει 1/1 Εδώ είναι η λύση που έβαλα τελικά εγω. function [R,p,w_o] = wiener( a, b, c, sigma_v1, sigma_v2 ) a = [1; a(:)];
A = [a(1) a(2) a(3) a(4); a(2) a(1)+a(3) a(4) 0; a(3) a(2)+a(4) a(1) 0; a(4) a(3) a(2) a(1)]; B = [sigma_v1; 0; 0; 0]; r = A \ B; R = toeplitz(r); p = R * (-b'); w_o = R \ p; end
function [y,w_out] = lms(u, d, m, mu) % LMS - Least Mean Square adaptation % persistent w persistent u_stream % initialize if isempty(w) w = zeros( m, 1 ); u_stream = zeros(m,1); end u_stream(end+1, 1) = u; % compute output y = w' * u_stream(end:-1:end-m+1); % get error e = d - y; % update weights w = w + mu * e * u_stream( end:-1:end-m+1 );
if nargout > 1 w_out = w; end end
function [y,w_out] = nlms(u, d, m, mu, alpha) % LMS - Least Mean Square adaptation % persistent w persistent u_stream % initialize if isempty(w) w = zeros( m, 1 ); u_stream = zeros(m,1); end u_stream(end+1, 1) = u;
% compute output y = w' * u_stream(end:-1:end-m+1); % get error e = d - y;
% update weights w = w + mu * e * u_stream( end:-1:end-m+1 )/ (alpha + u_stream( end:-1:end-m+1 )' * u_stream( end:-1:end-m+1 ));
if nargout > 1 w_out = w; end end
function [y,w_out] = rls(u, d, m, lambda, delta) % LMS - RLS adaptation % persistent w persistent u_stream persistent P % initialize if isempty(w) w = zeros( m, 1 ); u_stream = zeros(m,1); P = (1 / delta) * eye(m, m); end u_stream(end+1, 1) = u;
% compute output y = w' * u_stream(end:-1:end-m+1); % get error e = d - y; %compute k k = ((lambda^-1) * P * u_stream( end:-1:end-m+1 ) / (1 + (lambda^-1) * u_stream( end:-1:end-m+1 )'* P * u_stream( end:-1:end-m+1 )));
% update weights w = w + k * e; %compute P P = (lambda^-1) * P - (lambda^-1) * k * u_stream( end:-1:end-m+1 )' * P;
if nargout > 1 w_out = w; end end Όποιος θέλει το παίρνει. Ο βαθμός του είναι 0.63.
|
|
|
20
|
Χαλαρή συζήτηση - κουβεντούλα / Διάφορα / Re: Με πέταξε ο Πιτσούλης γιατί νόμιζε ότι έκλεψα.
|
on: July 03, 2020, 12:59:08 pm
|
Παιδιά ο Πιτσούλης ειχε αναφερει σε ολες τις δοκιμαστικές, αλλα και στο pdf με τις οδηγιες οτι θα πρεπει ειτε να εκτυπωσουμε τα θεματα με το που τα παρουμε ειτε να τα αντιγραψουμε. Πιστευω πως κανεις δεν ειχε προβλημα με αυτο, μονο αν δεν ειχες διαβασει ποτε τις οδηγιες. Που και παλι ο Πιτσουλης επετρεψε σε καποιους που δεν τα ειχαν αντιγραψει στην αρχη να τα αντιγραψουν μετα (επειδη δεν το ηξεραν). Οποτε λοιπον για το συγκεκριμενο θεμα θεωρω πως δεν εχουμε να πουμε τιποτα αλλο, ποσο μαλλον να διαμαρτυρηθουμε.
Οσο για το αλλο θεμα που ειπε ο nmpampal στην αρχη για το σκαναρισμα δεν παιρνω θεση γιατι δεν εχω καταλαβει ακριβως τι παιχτηκε, και φυσικα κανεις δεν μπορει να πει στον nmpampal οτι δεν εχει δικαιωμα να πει κατι γι αυτο. Αν οντως δεν αδικηθηκε ας του το εξηγησουν καποιοι ή ας κανει μια συζητηση με τον καθηγητη και πιστευω θα την βρει την ακρη. Ωστοσο οπως και να χει, δεν υπαρχει κανενας λογος για ειρωνειες. Οσο και να διαφωνουμε με καποιον.
|
|
|
24
|
Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών / AVR Εποχή / Re: [Μικρο ΙΙ] Παλια Θέματα-Σχολιασμός Απορίες
|
on: February 06, 2020, 14:26:49 pm
|
καλησπερα! εχω μια απορια! Χρησιμοποιεις timers και μετα καποια iterations ! αυτο δεν θα επρεπε να γινει με μια loop ατερμονη LOOP : jmp LOOP ετσι ωστε να διακοπει απο το interrupt λόγω overflow?
Ο timer0 που εγραψα είναι για 50ms. Και αφού θέλω 5 sec τρέχω τον timer 100 φορές (κάθε φορά που τελειώνει ο timer αυξάνω κατά ένα το iterations και μετά το συγκρίνω με το 100).
|
|
|
|
|