conv
Convoluzione e moltiplicazione polinomiale
Sintassi
Descrizione
restituisce la convoluzione dei vettori w = conv(u,v)u e v. Se u e v sono vettori di coefficienti polinomiali, la loro convoluzione equivale a moltiplicare i due polinomi.
restituisce una sottosezione della convoluzione, come specificata da w = conv(u,v,shape)shape. Ad esempio, conv(u,v,"same") restituisce solo la parte centrale della convoluzione, della stessa dimensione di u, mentre conv(u,v,"valid") restituisce solo la parte di convoluzione calcolata senza i bordi di riempimento con zeri (zero padding).
Esempi
Creare vettori u e v che contengano i coefficienti dei polinomi e .
u = [1 0 1]; v = [2 7];
Utilizzare la convoluzione per moltiplicare i polinomi.
w = conv(u,v)
w = 1×4
2 7 2 7
w contiene i coefficienti polinomiali per .
Creare due vettori ed eseguire la loro convoluzione.
u = [1 1 1]; v = [1 1 0 0 0 1 1]; w = conv(u,v)
w = 1×9
1 2 2 1 0 1 2 2 1
La lunghezza di w è length(u)+length(v)-1 che, in questo esempio, è 9.
Creare due vettori. Trovare la parte centrale della convoluzione di u e v che abbia la stessa dimensione di u.
u = [-1 2 3 -2 0 1 2];
v = [2 4 -1 1];
w = conv(u,v,"same")w = 1×7
15 5 -9 7 6 7 -1
w ha una lunghezza di 7. La lunghezza della convoluzione completa sarebbe length(u)+length(v)-1 che, in questo esempio, sarebbe pari a 10.
Argomenti di input
Vettori di input, specificati come vettori di riga o di colonna. I vettori u e v possono essere di lunghezze diverse o avere tipi di dati diversi.
Quando u o v sono di tipo single, l’output è di tipo single. Diversamente, conv converte gli input nel tipo double e restituisce il tipo double.
Tipi di dati: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Supporto numeri complessi: Sì
Sottosezione della convoluzione, specificata come "full", "same" o "valid".
"full" | Convoluzione completa (predefinita). |
"same" | Parte centrale della convoluzione della stessa dimensione di |
"valid" | Solo le parti di convoluzione calcolate senza i bordi di riempimento con zeri (zero padding). Utilizzando questa opzione, |
Argomenti di output
Vettore convoluto, restituito come vettore riga o vettore colonna.
Ulteriori informazioni
La convoluzione di due vettori u e v, rappresenta l’area di sovrapposizione sotto i punti mentre v scorre attraverso u. Algebricamente, la convoluzione è la stessa operazione di moltiplicazione di polinomi i cui coefficienti sono gli elementi di u e v.
Considerare m = length(u) e n = length(v). Quindi w è il vettore di lunghezza m+n-1 il cui k-esimo elemento è
La somma si riferisce a tutti i valori di j che determinano pedici ammessi per u(j) e v(k-j+1), specificatamente j = max(1,k+1-n):1:min(k,m). Quando m = n si ottiene
w(1) = u(1)*v(1) w(2) = u(1)*v(2)+u(2)*v(1) w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1) ... w(n) = u(1)*v(n)+u(2)*v(n-1)+ ... +u(n)*v(1) ... w(2*n-1) = u(n)*v(n)
Utilizzando questa definizione, conv calcola la convoluzione diretta di due vettori, anziché la convoluzione basata sulla FFT.
Funzionalità estese
La funzione conv supporta i tall array con le seguenti note su utilizzo e limitazioni:
Gli input
uevdevono essere vettori a colonna.Se
shapeè"full"(predefinita), solo uno diuovpuò essere un tall array.Se
shapeè"same"o"valid",vnon può essere un tall array.
Per maggiori informazioni, vedere Tall Array.
Note su utilizzo e limitazioni:
Se utilizzato, l'argomento
shapedeve essere costante al momento della generazione di codice.Per gli argomenti di input
uev:È necessario specificare il vettore di input come vettore a grandezza fissa o vettore a lunghezza variabile al momento della generazione di codice. Sia la prima che la seconda dimensione del vettore possono essere di grandezza variabile. Tutte le altre dimensioni devono avere una grandezza fissa pari a 1.
I vettori di input
uevdevono avere lo stesso orientamento.
Consultare le note su utilizzo e limitazioni nella sezione Generazione di codice C/C++. Le stesse note su utilizzo e limitazioni si applicano alla generazione di codice GPU.
La funzione conv supporta completamente gli ambienti basati su thread. Per maggiori informazioni, vedere Run MATLAB Functions in Thread-Based Environment.
La funzione conv supporta completamente gli array di GPU. Per eseguire la funzione su una GPU, specificare i dati di input come un gpuArray (Parallel Computing Toolbox). Per maggiori informazioni, vedere Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
La funzione conv supporta completamente gli array distribuiti. Per maggiori informazioni, vedere Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Cronologia versioni
Introduzione prima di R2006aQuando si calcola una convoluzione completa utilizzando w = conv(u,v) o w = conv(u,v,"full"), l'output w è un vettore riga a meno che entrambi i vettori di input u e v non siano vettori colonna.
Ad esempio, se si esegue la convoluzione di un vettore riga e di vettore colonna, l'output è un vettore riga.
u = [1 0 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2 7 6 7 4u = [1; 0; 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2
7
6
7
4A titolo di confronto, quando si calcolava una convoluzione completa nelle release precedenti, la funzione conv restituiva un vettore riga o un vettore colonna a seconda degli orientamenti e delle lunghezze di u e v.
Ad esempio, nelle release precedenti, conv restituiva la convoluzione completa di un vettore riga 1x3 e un vettore colonna 3x1 come vettore colonna 5x1.
u = [1 0 1]; v = [2; 7; 4]; w = conv(u,v)
w =
2
7
6
7
4conv restituiva la convoluzione completa di un vettore riga 1x3 e di un vettore colonna 2x1 come vettore riga 1x4.u = [1 0 1]; v = [2; 7]; w = conv(u,v)
w =
2 7 2 7Non sono state apportate modifiche all'output di w = conv(u,v,"same") o w = conv(u,v,"valid"), dove l'output segue ancora l'orientamento del primo vettore di input u.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)