ESERCIZIO 1. Informatica B - Esercitazione 10

Documenti analoghi
Matlab/Octave - Esercitazione 10

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Facoltà di Ingegneria Industriale. Matlab/Octave - Esercitazione 3

Facoltà di Ingegneria Industriale. Matlab/Octave - Esercitazione 2

10 Funzioni MATLAB. dove. output1, output2,.. sono gli output (opzionali), che, se dichiarati, devono essere inizializzati dalla funzione

11 Funzioni MATLAB. dove. output1, output2,.. sono gli output (opzionali), che, se dichiarati, devono essere inizializzati dalla funzione

13 Esercizi di Riepilogo

10 Funzioni MATLAB. dove: output1, output2,.. sono gli output (opzionali), che, se dichiarati, devono essere inizializzati dalla funzione

10 Funzioni MATLAB. dove. output1, output2,.. sono gli output (opzionali), che, se dichiarati, devono essere inizializzati dalla funzione

x = input('inserisci x: '); fx = 1 for ii = 1 : x fx = fx * ii; end if (fx > 220) y = input('inserisci y: '); fy = 1 for ii = 1 : y fy = fy * ii; end

x = input('inserisci x: '); fx = 1 for ii = 1 : x fx = fx * ii; end if (fx > 220) y = input('inserisci y: '); fy = 1 for ii = 1 : y fy = fy * ii; end

Principi di Programmazione Prova del 10/6/2008 (ore 10.30)

Vettori e Matrici. Corso di Calcolo Numerico. 24 Aprile 2018

12 Function Handles e Ricorsione in MATLAB

ESERCIZIO 1. Informatica B - Esercitazione 12

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

Laboratorio n 6 del Ing. Dario Cogliati

Esercitazione 00 Introduzione a Matlab

13 Esercizi di Riepilogo

10 Funzioni MATLAB. dove: output1, output2,.. sono gli output (opzionali), che, se dichiarati, devono essere inizializzati dalla funzione

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

Matlab: Funzioni. Informatica B AA 17/18 Luca Cassano 22 Novembre Informatica B, AA 17/18, Luca Cassano

Facoltà di Ingegneria Industriale. Matlab/Octave - Esercitazione 7. ricorsione e funzioni anonime

15 Riepilogo di esercizi in MATLAB

Laboratorio 26/09/2000

Abbiamo inoltre visto come tracciare grafici di superfici su spazio cartesiano con la funzione mesh:

Informatica B

Parte 1: tipi primitivi e istruzioni C

Università degli Studi di Ferrara Corso di Laurea in Chimica - A.A

Esercizi scalari. 10*10^6 + 3; (Usare la notazione esponenziale) coseno(30 ) - seno(pi greco/2) + pi greco /6 (0.3896)

Informatica B

Matlab 5. Funzioni. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

1 (4) 2 (16) 3 (6) 4 (6)

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione a Matlab

Argomenti Capitolo 1 Richiami

(Def. funzioni con parametri di tipo matrice)

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 4 - Polinomi e Interpolazione polinomiale

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Laboratorio di Programmazione Esercitazione 4

1 (7) 2 (6) 3 (6) 4 (7) 5 (6)

13 Esercizi di Riepilogo

Esercitazione 2. Espressioni booleane Il comando if-else

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Esercizi di autovalutazione - Matlab Metodi Numerici con Elementi di Programmazione A.A

- Esercitazione III Programmazione C Funzioni Alessandro Saetti

Matlab: Variabili e Array. Informatica B

Laboratorio didattico di matematica computazionale

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

Prof. Marco Masseroli

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

Lab 13 Strutture e programmi su più file "

Lab 04 Programmazione Strutturata"

Introduzione al MATLAB c Parte 2 Funzioni

Esercitazione di Laboratorio - 4

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Università degli Studi di Ferrara

Informatica B

MATLAB Le funzioni. Funzioni. Funzioni. Funzioni

Strutture di controllo condizionali in Matlab

13 Ricorsione con MATLAB

Fondamenti di Informatica

Tema A+B COGNOME E NOME. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 4 Febbraio 2016

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 4 - Polinomi e Interpolazione polinomiale

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Matlab: Script e Funzioni

Lab 09 Strutture e programmi su più file

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Il linguaggio C funzioni e puntatori

Analisi dei segnali nel dominio del tempo

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Esercizio: Linear Congruential Generator

Funzioni. function [<risultati>] = nome_funzione ([ par.formali ])

FONDAMENTI DI SEGNALI E TRASMISSIONE 2 Laboratorio

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio

PROVA SCRITTA 23 MARZO 2010

LE FUNZIONI. Cosa sono DEFINIZIONI

Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica (ICA-LC) [083668] Informatica B [079904]

Informatica B - A.A. 2018/2019

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Facoltà di Ingegneria Industriale. e dei Trasporti. Dipartimento di Elettronica e Informazione. Informatica B. Prof.

Transcript:

ESERCIZIO 1 Informatica B - Esercitazione 10 Scrivere un programma che chiede all'utente di inserire un numero positivo (nel caso in cui il numero non sia positivo ripetere inserimento) e: - verifica se il numero è perfetto; - in caso contrario dice se è abbondante o difettivo; Un numero è perfetto se corrisponde alla somma dei suoi divisori, escluso se stesso; abbondante se è maggiore della somma dei suoi divisori; altrimenti è difettivo. - richiede un altro numero e controlla se i due numeri sono amici. a,b sono amici se (somma dei divisori di a) = b e viceversa. functions: - inseriscinumero() - controllaseperfetto() - sommadivisori() - controllaseamici() clear n1 = inseriscinumero(); [p,a] = controllaseperfetto(n1); if(p) disp([num2str(n1), ' è perfetto']) disp([num2str(n1), ' non è perfetto']) if(a) disp([num2str(n1), ' è abbondante']) disp([num2str(n1), ' è difettivo']) n2=inseriscinumero(); amici=controllaseamici(n1,n2); if(amici) disp([num2str(n1), ' e ', num2str(n2),' sono amici']) disp([num2str(n1), ' e ', num2str(n2),' non sono amici']) 1/9

ESERCIZIO 2 Informatica B - Esercitazione 10 Si considerino due matrici di interi A e B, di uguali dimensioni. Diciamo che A domina B se, confrontando i valori in posizioni corrispondenti, risulta che il numero dei valori in A maggiori dei corrispondenti valori in B è più grande del numero di quelli di B maggiori dei corrispondenti in A e inoltre gli elementi corrispondenti non sono mai uguali (se due elementi corrispondenti sono uguali la dominanza non è definita). Si codifichi la funzione domina() che riceve le matrici come parametri e restituisce 1 se la prima domina la seconda, -1 se la seconda domina la prima, 0 altrimenti. functions: - domina() clear all A = rand(8, 8) B = rand(size(a)) risultato = domina(a, B); switch(risultato) case 1 disp('a domina B'); case -1 disp('b domina A'); case 0 disp('dominanza non definita') 2/9

ESERCIZIO 3 Un array quotax di 365 valori interi, rappresenta le quotazioni del titolo azionario X nell?anno solare corrente. Si vuole realizzare un programma in grado di: un programma in grado di: - inizializzare il contenuto dell'array quotax con valori letti da standard input che devono essere compresi tra 1 e 100 (estremi inclusi), scartando eventuali valori fuori dall'intervallo (i valori esterni all intervallo saranno posti uguali all estremo più prossimo). - Salvare in una opportuna/e variabile di tipo struttura la quotazione massima e il primo giorno (espresso come posizione nell'array) in cui tale quotazione è stata memorizzata. - Scrivere la funzione quotacostante che determina e stampa a video il valore ed il numero di giorni dell anno in cui un titolo si è mantenuto costante (ossia, quante volte la medesima quotazione si è presentata in giorni successivi). Ad esempio, se le quotazioni fossero 10 10 15 14 12 12 1 8 9 9 12 12..., il titolo avrebbe avuto 4 periodi di quotazione costante. functions: - inizializzaquotazioni() - quotacostante() clear all quotax = inizializzaquotazioni(); [quotaxmax.valore quotaxmax.giorno] = max(quotax); disp(' ') disp(['quotazione massima raggiunta: ' num2str(quotaxmax.valore)]); disp(['nel giorno: ' num2str(quotaxmax.giorno)]); quotacostante(quotax); function quota = inizializzaquotazioni() quota = input('inserire il vettore delle quotazioni: '); while(length(quota) ~= 365) disp(['sono stati inseriti ' num2str(length(quota)) ' valori. Inserire 365 valori']) disp(' ') quota = input('inserire il vettore delle quotazioni: '); quota(quota > 100) = 100; quota(quota < 1) = 1; function quotacostante(quota) 3/9

periodi_costanti = quota(2:)-quota(1:-1); periodi_costanti = find(periodi_costanti == 0); valori_costanti = unique(quota(periodi_costanti)); for ii = 1:length(valori_costanti) disp(' ') disp(['quota: ' num2str(valori_costanti(ii))]); disp(['costante nei giorni: ' num2str(find(quota == valori_costanti(ii)))]); 4/9

ESERCIZIO 4 Informatica B - Esercitazione 10 Definire le seguenti funzioni usando due variabili funzionali: - f1 = x.^2-y.^2 - f2 = sin(sqrt(x.^2+y.^2))./(sqrt(x.^2+y.^2)); - Rappresentare ogni singola funzione con un grafico tridimensionale valutandola per valori di x ed y rispettivamente pari a: x = [-7:0.1:7] e y = [-7:0.1:7]. - Disegnare la porzione di f1 valutata su y = [0:0.1:7] in bianco e quella valutata su y = [0:-0.1:-7] in blu. - Evidenziare nel grafico di f2 i valori?discreti? di cui è composta la funzione per x = [-7:7] e y = [-7:7]. f1=@(x,y)(x.^2-y.^2); [xx,yy] = meshgrid([0:0.1:7],[0:0.1:7]); zz = f1(xx,yy); disegno la matrice zz che rappresenta i punti della funzione f come una mesh in figura 1 figure(1) mesh(xx,yy,zz); [xx1,yy1] = meshgrid([0:0.1:7],[0:-0.1:-7]); rivaluto f zz1=f1(xx1,yy1); figure(1) hold on mesh(xx1,yy1,zz1,'facecolor','b'); hold off disegno la funzione f2 f2=@(x,y)(sin(sqrt(x.^2+y.^2))./(sqrt(x.^2+y.^2))); [xx,yy] = meshgrid([-7:0.1:7],[-7:0.1:7]); zz = f2(xx,yy); figure(2) surf(xx,yy,zz); definisco il dominio (due *vettori* x e y, contenuti nelle aree sopra xx,yy) [xx,yy] = meshgrid([-7:7],[-7:7]); zz = f2(xx,yy); figure(2) hold on plot3(xx,yy,zz,'ro', 'Linewidth', 2) hold off 5/9

ESERCIZIO 5 Informatica B - Esercitazione 10 1. Implementare una funzione r = cerchio(x, y). La funzione riceve in ingresso due vettori x e y di uguale dimensione che rappresentano le ascisse e le ordinate di un insieme di punti nel piano cartesiano. La funzione restituisce un vettore logico r, di lunghezza pari a quella dei vettori x e y, tale che: r(i) è pari a 1 se e solo se il punto definito dalle coordinate x(i) e y(i) si trova all interno della circonferenza di raggio 3 e centro (0,0). Suggerimento: un punto si trova all interno di una circonferenza se la sua distanza dal centro è inferiore al raggio della circonferenza. Si consideri una famiglia di funzioni in linguaggio Matlab che, ricevo come parametro un numero intero N>0, restituiscano due vettori x e y, di lunghezza N, contenenti rispettivamente le ascisse e le ordinate di N punti nel piano cartesiano. Un esempio di funzione di questo tipo è il seguente: [x, y] = puntisuassex(n) x = 1:N; y = zeros(1, N) La chiamata puntisuassex(5) restituisce i due vettori: X=[1 2 3 4 5] y=[0 0 0 0 0] 2. Implementare la funzione di ordine superiore M = conta(n, genera) che riceve in ingresso: nel parametro N un valore numerico intero positivo non nullo e nel parametro genera una funzione, per esempio la puntisuassex. La funzione conta utilizza la funzione nel parametro genera per produrre N punti nel piano cartesiano e, utilizzando la funzione cerchio sviluppata al punto 1, restituisce, tramite il parametro M, il numero dei punti che non si trovano all?interno della circonferenza di raggio 3 e centro (0,0). Per esempio, la chiamata conta(5, @puntisuassex) restituisce il valore 3, corrispondente ai punti (3,0), (4,0) e (5,0) prodotti dalla chiamata di puntisuassex(5) che non si trovano all?interno della circonferenza data. clear all N = 100; genera = @puntisuassex; genera = @puntisuassey; genera = @punticasuali; rg = 3; M = conta(n, genera, rg) function M = conta(n, genera, rg) if(n > 0) 6/9

[x,y] = genera(n); r = (cerchio(x, y, rg)); M = sum(~r); disp('il valore di N deve essere > 0'); scatter(x, y) hold on scatter(x(r), y(r), 'r') disegna_cerchio; function r = cerchio(x, y, rg) if(length(x) == length(y)) r = sqrt((x).*(x) + y.*y) < rg; disp('i vettori x e y devono avere la stessa dimensione') function [x, y] = punticasuali(n) dev_st = 3; x = dev_st*randn(1, N); y = dev_st*randn(1, N); function [x, y] = puntisuassey(n) y = 1:N; x = zeros(1, N); function [x, y] = puntisuassex(n) x = 1:N; y = zeros(1, N); 7/9

ESERCIZIO 6 Scrivere un programma per l?elaborazione in tempo reali di immagini. Il programma dovrà: - caricare i 3 canali R, G e B di un?immagine all interno di tre matrici R, G e B; - dare la possibilità all utente di eseguire le seguenti elaborazioni: - elaborazione r, g o b, separazione dei canali. L utente può specificare da input il canale da visualizzare; - elaborazione noise, aggiunta di rumore all immagine. Ad ogni matrice R, G, B se ne somma una casuale generata con randn(); - elaborazione chromakey. L utente specifica il codice del colore da sostituire color_in=[r_in g_in b_in] quello del colore sostituente color_out=[r_out g_out b_out]. clear all image = imread('lena.jpg'); separazione dei canali Rin = double(image(:, :, 1)); Gin = double(image(:, :, 2)); Bin = double(image(:, :, 3)); elaborazione = input('elaborazione: '); switch(elaborazione) case 'r' Rout = Rin; Gout = zeros(size(gin)); Bout = zeros(size(bin)); case 'g' Rout = zeros(size(rin)); Gout = Gin; Bout = zeros(size(bin)); case 'b' Rout = zeros(size(rin)); Gout = zeros(size(gin)); Bout = Bin; case 'noise' noise_gain = input('quantità di rumore: '); 8/9

Rout = noise_gain*randn(size(rin)) + Rin; Gout = noise_gain*randn(size(gin)) + Gin; Bout = noise_gain*randn(size(bin)) + Bin; case 'chromakey' color_in = input('colore da sostituire: '); color_out = input('colore sostituente: '); Rout = Rin; Gout = Gin; Bout = Bin; Rindex = find(rin == color_in(1)); Gindex = find(gin == color_in(2)); Bindex = find(bin == color_in(3)); Rout(Rindex) = color_out(1); Gout(Gindex) = color_out(2); Bout(Bindex) = color_out(3); image_processed = uint8(image_processed); imshow(image_processed); 9/9