% Nacrtati četverostranu piramidu čija je dužina stranica osnove a= 3, % a visina piramide h=4? Izračunati površinu i zapreminu piramide. a=3; h=4; P=a^2 + 2*a*h; V=a^2*h./3; fprintf('Povrsina je:'); disp(P); fprintf('Zapremina je:'); disp(V); x = [0 3 3 0]; y = [0 0 3 3]; z = [0 0 0 0]; patch(x,y,z,'y'); grid on; axis([-2 5 -2 5]); xlabel('x-osa'); ylabel('y-osa'); zlabel('z-osa'); x = [0 3 1.5]; y = [0 0 1.5]; z = [0 0 4]; patch(x,y,z,'r'); grid on; axis([-2 5 -2 5]); xlabel('x-osa'); ylabel('y-osa'); zlabel('z-osa'); x = [0 0 1.5] y = [0 3 1.5]; z = [0 0 4]; patch(x,y,z,'g'); grid on; axis([-2 5 -2 5]); xlabel('x-osa'); ylabel('y-osa'); zlabel('z-osa'); x = [0 3 1.5]; y = [3 3 1.5]; z = [0 0 4]; patch(x,y,z,'b'); grid on; axis([-2 5 -2 5]); xlabel('x-osa'); ylabel('y-osa'); zlabel('z-osa'); x = [3 3 1.5]; y = [0 3 1.5]; z = [0 0 4]; patch(x,y,z,'m'); grid on; axis([-2 5 -2 5]); xlabel('x-osa'); ylabel('y-osa'); zlabel('z-osa'); % Zadatak 2. Učitati sliku sa računara u boji i zatim izvršiti filtriranje upotrebom filter: 'motion', 'sobel', 'log', 'disk', 'unsharp'. Originalnu sliku i filtrirane slike prikazati naredbom subplot. s=imread('buket.jpg'); I=im2double(s); subplot(3,2,1),imshow(I), title('Original'); H=fspecial('motion',30,60); Motion=imfilter(I,H,'replicate'); subplot(3,2,2),imshow(Motion),title('Motion'); H=fspecial('sobel'); Sobel=imfilter(I,H,'replicate'); subplot(3,2,3),imshow(Sobel),title('Sobel'); H=fspecial('log',[30,100],0.2); Log=imfilter(I,H,'replicate'); subplot(3,2,4),imshow(Log),title('Log'); H=fspecial('disk',20); Disk=imfilter(I,H,'replicate'); subplot(3,2,5),imshow(Disk),title('Disk'); H=fspecial('unsharp'); Unsharp=imfilter(I,H,'replicate'); subplot(3,2,6),imshow(Unsharp),title('Unsharp'); % Nacrtati graf funkcije f = sin(3theta) u polarnim koordinatama i izvršiti njegovu rotaciju za puni krug u vremenu od dvije sekunde. Takoder nacrtati plohu z = sin(x2 + y2) iizvršiti njegovu rotaciju za dva kruga u vremenu od 5 sekundi. figure theta=0:pi/100:2*pi; rho=sin(theta*3); subplot(2,1,1),h=polar(theta,rho,'go'); pause for i=1:60 zdir=[0 0 1]; center=[0 0 0]; pause(2/60) rotate(h,zdir,6,center) end pause [x,y]=meshgrid([-2:0.1:2]); z=sin(x.^2+y.^2); subplot(2,1,2),h=surf(x,y,z) pause axis tight for i=1:100 zdir=[0 0 -1]; center=[0 0 0]; rotate(h,zdir,7.2,center) pause(5/100) end Spojiti zvučne signale upotrebom operatora konkatanacije toms.wav i tenor-sax.wav i prikazati ih upotrebom naredbe plot. [zvuk 1,fs]=wavread( 'toms.wav' ); [zvuk2,fs]=wavread( 'tenorsax.wav'); spojeni = [zvuk 1; zvuk2]; t=0:1/fs:1/fs* (length(spojeni)-1); plot(t,spojeni) xlabel('Vrijeme[s]') ylabel('Amplituda') % Izvršiti miksanje zvučnog signala toms.wav sa sinusnim signalom.x=0.5sin(2pi t). Prikazati ulazne i izlazni zvučni signal. zvuk1= 'toms.way'; [y, FS]= wavread(zvuk1); t=0:1/Fs:1/Fs* (length(y)-1); sinusnisignal = 0.5*sin(2*pi*t)'; novisignal = y + sinusnisignal; subplot(3,1,1), plot(t,y, 'linewidth',2) title('Ulazni signal' ); ylabel('Amplituda' ) subplot(3,1,2), plot(t,sinusnisignal, 'r', 'linewidth',2) title('Sinusni signal' ); ylabel('Amplituda') subplot(3,1,3), plot(t,novisignal, 'g', 'linewidth',2) title('Miksani signal' ); xlabel('Vrijeme[s]') ylabel('Amplituda') Projektovati niskopropusni filter ako su zadani ulazni parametri: frekvencija uzrokovanja fs-44000 Hz, granica propusnog pojasa Wp-1000 Hz, granica nepropusnog pojasa Ws-1300 Hz, valovitost u propusnom pojasu Rp=1 dB i slabljenje u nepropusnom pojasu Rs-40 dB. fs=44000; Wp=[2*1000/fs]; Ws=[2*1300/fs]; Rp=1; Rs=40; d=fdesign.lowpass('Fst,Fp,Ast,Ap',Ws,Wp,Rs,Rp); f=design(d,'cheby2'); info(f) fvtool(f) [Y,FS]=wavread('matlab.wav'); t=0:1/fs:1/fs*(length(Y)-1); plot(t,Y) xlabel('Vrijeme [s]') ylabel('Amplituda') hold on izlaz=filter(f,Y); plot(t,izlaz,'r-') legend('Ulazni signal','Filtrirani signal') Učitati proizvoljni zvučni signal. Izvršiti linearno pojačavanje zvučnog signala, zatim napraviti inverziju signala. [zvuk,fs] = audioread('sound.mp3'); ramp = 0:1/(length(zvuk)-1):1; linearno_pojacanje = zvuk.*ramp'; inverzija = zvuk .* (1 - ramp'); t = 0:1/fs:1/fs*(length(zvuk)-1); subplot(211) plot(t,zvuk) title('Ulazni zvucni signal'); axis([0 2 -1 1]) subplot(212) plot(t,linearno_pojacanje) hold on plot(t, inverzija, 'g', 'LineWidth', 2); plot(t, ramp, 'r', 'LineWidth', 2); title('Linearno pojacanje i inverzija signala'); xlabel('Vrijeme (s)'); ylabel('Amplituda'); legend('Linearno pojacanje', 'Inverzija', 'Ramp', 'Location', 'best'); axis([0 2 -1 1]); %izvrsiti animaciju kretanje tacke kroz putanju % generiranje objekta t = linspace(0,2*pi,100); x = 5*cos(t); y = 2*sin(t); z = t; % iscrtavanje figure clf for k = 1:length(t) t_k = t(k); x_t = x(k); y_t = y(k); z_t = z(k); plot3(x_t,y_t,z_t,'go','Linewidth',3,'MarkerSize',15); hold on plot3(x,y,z,'b-','LineWidth',2); grid on xlabel('x-osa'); ylabel('y-osa'); zlabel('z-osa'); title(['Tacka je na putanji t=', num2str(t_k),' sekundi']); view([30 35]); movieVector(k) = getframe; myWriter = VideoWriter('krivulja','MPEG-4'); myWriter.FrameRate = 20; open(myWriter); writeVideo(myWriter); end Unositi riječi upotrebom tastature sve dok se ne unese riječ koja počinje sa slovom 'i'a završava sa slovom 'd' te u sebi ima samo samoglasnike.Tu riječ treba pretvoriti u velika slova. Zatim sve unelene riječi napisati kao niz na način da svaki samoglasni bude ispisan velikim slovom osim zadnje riječi koja je već ispisana velikim slovima.Prebrojati unešene riječi. rijeci = {}; samoglasnici = 'aeiou'; konacnaRijec = ''; brojac = 0; while true rijec = input('Unesite riječ: ', 's'); rijeci{end + 1} = rijec; brojac = brojac + 1; if startsWith(rijec, 'i') && endsWith(rijec, 'd') sredina = rijec(2:end-1); if all(ismember(sredina, samoglasnici)) konacnaRijec = upper(rijec); rijeci{end} = konacnaRijec; break; end end end for i = 1:length(rijeci) - 1 rijec = rijeci{i}; for j = 1:length(rijec) if ismember(rijec(j), samoglasnici) rijec(j) = upper(rijec(j)); end end rijeci{i} = rijec; end fprintf('Ukupan broj unesenih riječi: %d\n', brojac); fprintf('Sve unijete riječi sa velikim samoglasnicima osim zadnje:\n'); disp(rijeci(1:end-1)); fprintf('Zadnja riječ:\n%s\n', konacnaRijec); % a) Generisati i sabrati čiste tonove frekvencije 300 Hz i 700 Hz, % frekvencije uzrokovanja fs-4000 Hz. Generisani zvučni signal prikazati u vrmenskom i frekvencijskom domenu. b) Projektovati visokopropuni filter ako su zadani ulazni parametri: frekvencija uzrokovanja fs-44000 Hz, granica propusnog pojasa Wp-3000 Hz, granica nepropusnog pojasa Ws-2900 Hz, valovitost u propusnom pojasu Rp-1 Db i slabljenje u nepropusnom pojasu Rs 40 dB. Fs=4000; T=1/Fs; L=1000; t=(0:L-1)*T; y=0.7*sin(2*pi*300*t)+sin(2*pi*700*t); subplot(211) plot(t(1:200),y(1:200)) title('Sinusni signal'); xlabel('Vrijeme'); ylabel('Amplituda'); NFFT=2^nextpow2(L); Y=fft(y,NFFT)/L; f=Fs/2*linspace(0,1,NFFT/2+1); subplot(212) plot(f,2*abs(Y(1:NFFT/2+1)),'r') xlabel('Frekvencija'); ylabel('Funkcija y'); % b) clear all clc fs=44000; Wp=[2*3000/fs]; Ws=[2*2900/fs]; Rp=1; Rs=40; d=fdesign.highpass('Fst,Fp,Ast,Ap',Ws,Wp,Rs,Rp); f=design(d,'cheby2'); info(f) fvtool(f) [Y,FS]=wavread('matlab.wav'); t=0:1/fs:1/fs*(length(Y)-1); plot(t,Y) xlabel('Vrijeme [s]') ylabel('Amplituda') hold on izlaz=filter(f,Y); plot(t,izlaz,'r-') legend('Ulazni signal','Filtrirani signal') Učitati sliku sa računara u boji i zatim izvršiti filtriranje upotrebom filter: 'motion', 'sobel', 'log', 'disk', 'unsharp'. Originalnu sliku i filtrirane slike prikazati naredbom subplot. s=imread('buket.jpg'); I=im2double(s); subplot(3,2,1),imshow(I), title('Original'); H=fspecial('motion',30,60); Motion=imfilter(I,H,'replicate'); subplot(3,2,2),imshow(Motion),title('Motion'); H=fspecial('sobel'); Sobel=imfilter(I,H,'replicate'); subplot(3,2,3),imshow(Sobel),title('Sobel'); H=fspecial('log',[30,100],0.2); Log=imfilter(I,H,'replicate'); subplot(3,2,4),imshow(Log),title('Log'); H=fspecial('disk',20); Disk=imfilter(I,H,'replicate'); subplot(3,2,5),imshow(Disk),title('Disk'); H=fspecial('unsharp'); Unsharp=imfilter(I,H,'replicate'); subplot(3,2,6),imshow(Unsharp),title('Unsharp'); %jednacine sa uslvima syms x y(x) jed1 = (1 + x^2) * diff(y, x) == x * (2 * y + 1); jed2 = x* diff(y,x) - (y)/(x+1) == x; rj_jed1 = dsolve(jed1); uslov_2=y(0)==-1; rj_jed2 = dsolve(jed2); disp(rj_jed1) disp(rj_jed2) EMIROV ZAD 4 ExclSentencesEditField- usklicne PeriodSentencesEditField – izjavne QuestionSentencesEditField - upitne VowelsEditField – samoglasici WordsEditField – rijeci NonVowelsEditField – suglasnici DeleteButton – delete buton InputTextArea– txt area SentencesEditField – recenica StartButton – Start buton: % Get input text text = app.InputTextArea.Value; text = string(text); % Count words words = strsplit(text); numWords = length(words); % Count exclamation sentences numExclSentences = numel(strfind(text, '!')); numPeriodSentences = numel(strfind(text, '.')); numQuestionSentences = numel(strfind(text, '?')); numSentences = numExclSentences + numPeriodSentences + numQuestionSentences; % Count vowels vowels = 'AEIOUaeiou'; textlower = lower(text); numa = numel(strfind(textlower, 'a')); nume = numel(strfind(textlower, 'e')); numi = numel(strfind(textlower, 'i')); numo = numel(strfind(textlower, 'o')); numu = numel(strfind(textlower, 'u')); numVowels = numa+nume+numi+numo+numu; % Count non-vowels numNonVowels = sum(isletter(text)) - numVowels; % Count all letters minus vowels % Update fields app.WordsEditField.Value = num2str(numWords); app.SentencesEditField.Value = num2str(numSentences); app.ExclSentencesEditField.Value = num2str(numExclSentences); app.PeriodSentencesEditField.Value = num2str(numPeriodSentences); app.QuestionSentencesEditField.Value = num2str(numQuestionSentences); app.VowelsEditField.Value = num2str(numVowels); app.NonVowelsEditField.Value = num2str(numNonVowels); Delete butnon: app.InputTextArea.Value = ''; % Clear the results fields app.WordsEditField.Value = num2str(0); app.SentencesEditField.Value = num2str(0); app.ExclSentencesEditField.Value =num2str(0); app.PeriodSentencesEditField.Value =num2str(0); app.QuestionSentencesEditField.Value = num2str(0); app.VowelsEditField.Value = num2str(0); app.NonVowelsEditField.Value = num2str(0); % Unijeti tekst sa tastature i provjeriti koliko u njemu ima slogova 'sni' i % na kojim indeksima se ponavlja. Pronaći koliko taj tekst sadrži praznih mjesta i % na kojim indeksima se nalaze. Provjeriti koliko u tekstu ima rečenica te % koliko ima upitnih, uzvičnih i izjavnih, i ispisati broj riječi u tekstu. tekst = input('Unesite tekst: ', 's'); % Pronalazak svih pojavljivanja sloga 'sni' slog = 'sni'; slogIndeksi = strfind(tekst, slog); brojSlogova = length(slogIndeksi); % Pronalazak svih pojavljivanja praznih mjesta praznaMjesta = find(tekst == ' '); brojPraznihMjesta = length(praznaMjesta); % Brojanje rečenica recenice = regexp(tekst, '[.!?]', 'split'); brojRecenica = length(recenice) - 1; % Brojanje upitnih, uzvičnih i izjavnih rečenica brojUpitnih = length(find(tekst == '?')); brojUzvicnih = length(find(tekst == '!')); brojIzjavnih = length(find(tekst == '.')); % Brojanje riječi u tekstu rijeci = strsplit(tekst); brojRijeci = length(rijeci); % Ispis rezultata fprintf('Broj pojavljivanja sloga ''sni'': %d\n', brojSlogova); fprintf('Indeksi pojavljivanja sloga ''sni'': '); disp(slogIndeksi); fprintf('Broj praznih mjesta: %d\n', brojPraznihMjesta); fprintf('Indeksi praznih mjesta: '); disp(praznaMjesta); fprintf('Broj rečenica: %d\n', brojRecenica); fprintf('Broj upitnih rečenica: %d\n', brojUpitnih); fprintf('Broj uzvičnih rečenica: %d\n', brojUzvicnih); fprintf('Broj izjavnih rečenica: %d\n', brojIzjavnih); fprintf('Broj riječi u tekstu: %d\n', brojRijeci); t=0:pi/50:2*pi; x=cos(t); y=sin(t); krug=patch(x,y,'y'); axis([-2 2 -2 2]); x1=[-0.225 0.225 0]; y1=[1.2 1.2 1.5]; trokut1=patch(x1,y1,'y'); x2=[-0.225 0.225 0]; y2=[-1.2 -1.2 -1.5]; trokut2=patch(x2,y2,'y'); x3=[1.2 1.2 1.5]; y3=[0.225 -0.225 0]; trokut3=patch(x3,y3,'y'); x4=[-1.2 -1.2 -1.5]; y4=[0.225 -0.225 0]; trokut4=patch(x4,y4,'y'); x5=[0.90 1 0.6]; y5=[0.65 1.1 1]; trokut5=patch(x5,y5,'y'); x6=[0.90 1 0.6]; y6=[-0.65 -1.1 -1]; trokut6=patch(x6,y6,'y'); x7=[-0.9 -1 -0.6]; y7=[0.65 1.1 1]; trokut7=patch(x7,y7,'y'); x8=[-0.9 -1 -0.6]; y8=[-0.65 -1.1 -1]; trokut8=patch(x8,y8,'y'); sunce=[krug trokut1 trokut2 trokut3 trokut4 trokut5 trokut6 trokut7 trokut8]; for i=1:60 rotate(sunce, [0 0 1], 30, [0 0 0]); pause(2/60); end x1 = 0; y1 = -0.5:0.001:0.1; x2 = 4; y2 = -0.5:0.001:0; y3 = 0; x3 = 0:0.01:4; plot(x1*ones(size(y1)), y1, x2*ones(size(y2)), y2, x3, y3*ones(size(x3)), 'LineWidth', 4) hold on t = (0:1/720:1)' * 2 * pi; x = 0.1 + 0.1 * sin(t); y = 0.1 + 0.1 * cos(t); h = fill(x, y, 'b'); axis([-0.5 4.5 -0.5 2]) xr = x; yr = y; a = 0; b = 0; c = 0; % Kretanje lopte s lijeva na desno i obrnuto for i = 1:80 xr = xr + (3.8 / 80); % Pomicanje po x osi za 3.8 u 80 koraka a = a + (3.8 / 80); % Pomicanje centra rotacije pause(3 / 160) % Pauza od 3/160 sekundi između koraka set(h, 'xdata', xr, 'ydata', yr) rotate(h, [0 0 1], 10, [a b 0]) % Rotacija oko z osi end for i = 1:80 xr = xr - (3.8 / 80); % Pomicanje u suprotnom smjeru za istu udaljenost a = a - (3.8 / 80); % Pomicanje centra rotacije pause(3 / 160) % Pauza između koraka set(h, 'xdata', xr, 'ydata', yr) rotate(h, [0 0 1], 10, [a b 0]) % Rotacija oko z osi end close all clc x1=[6 8 7 ] y1=[3 3 2] trougao=patch(x1,y1,'r') x11=x1 y11=y1 axis([3 8 -1 3]) for i=1:30 x11=x11-0.1 y11=y11; set(trougao,'x',x11,'y',y11) pause(3/30) end a=x11+1 b=y11-0.5 for i=1:30 x11=x11+0.1 y11=y11-0.1; set(trougao,'x',x11,'y',y11) pause(3/30) end for i=1:30 rotate(trougao,[0 0 1],6,[7,-0.5,0]) pause (0.1) end x11=[6 8 7] y11=[-1 -1 0] for i=1:30 x11=x11-0.1 y11=y11; set(trougao,'x',x11,'y',y11) pause(2/30) end for i=1:30 x11=x11+0.1 y11=y11+0.1; set(trougao,'x',x11,'y',y11) pause(2/30) end for i=1:30 rotate(trougao,[0 0 1],6,[7,2.5,0]) pause (1/30) end clc clear all close all x=[0 10 10 0] y=[0 0 0.8 0.8] patch(x,y,'r') hold on t=(1/12:1/6:1)'*2*pi x1=sin(t)+1 y1=cos(t)+2 h=fill(x1,y1,'y'); axis([-2 12 -12 12]) grid on x11=x1; y22=y1; cx=1; for k=1:5 for i=1:30 zdir=[0 0 1]; center=[cx 2 0] set(h,'x',x11,'y',y22) rotate(h,zdir,i*30,center) cx=cx+0.27444; x11=x11+0.27444; y22=y22; pause(0.025) end for j=1:30 zdir=[0 0 1]; cx=cx; center=[cx 2 0]; set(h,'x',x11,'y',y22) rotate(h,zdir,j*30,center) x11=x11-0.27444; y22=y22; cx=cx-0.27444; pause(0.025) end end % Generisati čisti ton frekvencije 100 Hz u trajanju od 1s sa frekvencijom uzrokovanja od % 3000 uzoraka po sekundi. Takoder, generisati šum trajanja 2s sa frekvencijom uzrokovanja % od 1000 Hz korištenjem naredbe rand. Nakon toga izvršiti spajanje ovih signala. % Signal koji se dobije spajanjem miksati sa sinusnim signalom x-0.5 sin(2 pi t). % Prikazati sve zvučne signale. % Step 1: Generate a clean tone of 100 Hz for 1 second at 3000 Hz sampling rate fs1 = 3000; % Sampling frequency for the tone t1 = 0:1/fs1:1-1/fs1; % Time vector for 1 second tone = sin(2*pi*100*t1); % Generate the 100 Hz tone % Step 2: Generate white noise for 2 seconds at 1000 Hz sampling rate fs2 = 1000; % Sampling frequency for the noise t2 = 0:1/fs2:2-1/fs2; % Time vector for 2 seconds noise = randn(size(t2)); % Generate white noise % Step 3: Combine the clean tone and the white noise % Ensure both signals are of the same length by padding the shorter one with zeros if length(tone) < length(noise) t zeros(1, length(noise) - length(tone))]; elseif length(noise) < length(tone) noise = [noise zeros(1, length(tone) - length(noise))]; end combined_signal = tone + noise; % Step 4: Mix the combined signal with a sinusoidal signal t_combined = 0:1/fs1:(length(combined_signal)-1)/fs1; % Time vector for combined signal sinusoid = 0.5 * sin(2 * pi * t_combined); % Generate the sinusoidal signal mixed_signal = combined_signal + sinusoid; % Step 5: Display all the sound signals subplot(4, 1, 1); plot(t1, tone); title('100 Hz Tone'); subplot(4, 1, 2); plot(t2, noise); title('White Noise'); subplot(4, 1, 3); plot(t_combined, combined_signal); title('Combined Signal'); subplot(4, 1, 4); plot(t_combined, mixed_signal); title('Mixed Signal'); % Play the sounds sound(tone, fs1); pause(1); sound(noise, fs2); pause(2); sound(combined_signal, fs1); pause(length(combined_signal)/fs1); sound(mixed_signal, fs1);