Funzione in Matlab
Vorrei scrivere una funzione che applica un filtro mediano ad un' immagine ma ho dei problemi:
Non gli piace l' istruzione
Ma come faccio ad avere un' altra matrice e crearla con quelle dimensioni se così non posso?
Non funziona nemmeno così:
function [B]=mediano(A,m,n) B=zeros(m,n); for i=2:m-1 for j=2:n-1 vett=[A(i,j-1),A(i,j+1),A(i-1,j),A(i+1,j),A(i-1,j-1),A(i-1,j+1),A(i+1,j-1),A(i+1,j+1)]; vett=sort(vett); lenght=size(vett,2); B(i,j)=vett(ceil(lenght/2)); end end end
Non gli piace l' istruzione
B=zeros(m,n);
Ma come faccio ad avere un' altra matrice e crearla con quelle dimensioni se così non posso?
Non funziona nemmeno così:
function [B]=mediano(A) B=zeros(size(A));
Risposte
Che intendi con "non gli piace", che errore ottieni?
Mi dice sempre:
Input argument "A" is undefined.
Input argument "A" is undefined.
prova così:
function [B]=mediano(A) [m,n] = size(A); B=zeros(m,n);
No non va......il codice così diventa:
L'errore è:
Ma insomma perchè non posso lavorare e non capisce che si tratta di una matrice..
function [B]=funzionemediano(A) [m,n] = size(A); B=zeros(m,n); for i=2:m-1 for j=2:n-1 vett=[A(i,j-1),A(i,j+1),A(i-1,j),A(i+1,j),A(i-1,j-1),A(i-1,j+1),A(i+1,j-1),A(i+1,j+1)]; vett=sort(vett); lenght=size(vett,2); B(i,j)=vett(ceil(lenght/2)); end end end
L'errore è:
??? Input argument "A" is undefined. Error in ==> funzionemediano at 2 [m,n] = size(A);
Ma insomma perchè non posso lavorare e non capisce che si tratta di una matrice..

mi fai vedere come dichiari la matrice A? l'errore è li per forza
Non la dichiaro......scusa è una funzione, quindi il file viene salvato come funzione, quello che ho postato è un unico file salvato come funzione:
function [B]=funzionemediano(A) [m,n] = size(A); B=zeros(m,n); for i=2:m-1 for j=2:n-1 vett=[A(i,j-1),A(i,j+1),A(i-1,j),A(i+1,j),A(i-1,j-1),A(i-1,j+1),A(i+1,j-1),A(i+1,j+1)]; vett=sort(vett); lenght=size(vett,2); B(i,j)=vett(ceil(lenght/2)); end end end
si ok mi sono spiegato male...volevo dire quando invochi la funzione su matlab farai:
funzionemediano(A) ,ma prima devi dichiarare la matrice A come parametro da passare alla funzione ok?
in questo modo per esempio A=[1:2:7;4:2:10;7:2:13] questa è una 3x3 per esempio.
ecco secondo me l'errore sta li.
funzionemediano(A) ,ma prima devi dichiarare la matrice A come parametro da passare alla funzione ok?
in questo modo per esempio A=[1:2:7;4:2:10;7:2:13] questa è una 3x3 per esempio.
ecco secondo me l'errore sta li.
Ok ora va bene, niente è che mi fissavo ad eseguire la funzione, e pensavo fosse un errore di sintassi, invece testando il prog funziona:
Grazie comunque
clear all; close all; A=double(imread('lena.jpg')); B=funzionemediano(A); figure, subplot(1,2,1), imshow(uint8(A),[]),title('Originale'); subplot(1,2,2), imshow(uint8(B),[]),title('Filtro mediano');
Grazie comunque

sicuramente il problema sta li...
A=double(imread('lena.jpg'));
una prova che potresti fare è vedere come ti viene fuori A, su matlab scrivi quella riga e vedi che matrice ti viene fuori.
devo scappare...se non risolvi ti aiuto domani
buon lavoro
A=double(imread('lena.jpg'));
una prova che potresti fare è vedere come ti viene fuori A, su matlab scrivi quella riga e vedi che matrice ti viene fuori.
devo scappare...se non risolvi ti aiuto domani
buon lavoro
No no non hai capito, il problema l' ho risolto, è che io eseguivo la funzione e pensavo che ci fossero problemi di sintassi, non avevo eseguito il Main per così dire, quindi ora ho provato e non dà problemi.
ah scusami ho letto in fretta... bene meglio cosi!!!
buon lavoro
buon lavoro