Implementazione delle funzioni di MATLAB in Simulink con i blocchi MATLAB Function
I blocchi MATLAB Function consentono di definire funzioni personalizzate nei modelli di Simulink® utilizzando il linguaggio di MATLAB®. Utilizzare questi blocchi quando:
Si dispone di una funzione di MATLAB esistente che modella una funzionalità personalizzata oppure quando è facile creare una funzione di questo tipo.
Il modello richiede una funzionalità personalizzata che non è o non può essere catturata nel linguaggio grafico di Simulink.
Risulta più facile modellare una funzionalità personalizzata utilizzando una funzione di MATLAB piuttosto che un diagramma del blocco Simulink.
La funzionalità personalizzata che si desidera modellare non include stati dinamici continui o discreti. Per modellare gli stati dinamici, utilizzare le S-function. Vedere Scrittura dei blocchi utilizzando le funzioni S di MATLAB.
Calcolo della media e della deviazione standard con un blocco MATLAB Function
Questo esempio parte da un modello che include un blocco MATLAB Function e guida alla personalizzazione del blocco per calcolare la media e la deviazione standard di un vettore di valori.
Apertura del modello
Il modello call_stats_block1
include un blocco MATLAB Function vuoto e i blocchi necessari per l'esempio. Aprire il modello.
Programmazione del blocco MATLAB Function
Programmare il blocco per calcolare la media e la deviazione standard di un vettore di valori.
Per aprire l'Editor del blocco MATLAB function, fare doppio clic sul blocco MATLAB Function. Viene visualizzata una funzione predefinita nell'Editor del blocco MATLAB function con due variabili: un argomento di input e uno di output.
Definire gli input e gli output della funzione modificando la dichiarazione della funzione:
function [mean, stdev] = stats(vals)
Questa dichiarazione definisce una funzione chiamata
stats
con tre variabili. La dichiarazione definisce un argomento di inputvals
e due argomenti di outputmean
estdev
.In una nuova riga, dopo la dichiarazione della funzione, cancellare il codice esistente e aggiungere il seguente codice:
% Calculates a statistical mean and a standard % deviation for the values in vals. len = length(vals); mean = avg(vals,len); stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len); plot(vals,"-+"); function mean = avg(array,size) mean = sum(array)/size;
Il codice finale si presenta così:
Uscire dal blocco. Il blocco aggiorna i nomi delle porte. La funzione genera
mean
estdev
che corrispondono alle porte di output mean e stdev del blocco e la funzione di inputvals
che corrisponde alla porta di input vals del blocco.Completare i collegamenti al blocco MATLAB Function.
Salvare il modello come
call_stats_block2
.
Controllo delle proprietà delle variabili del blocco MATLAB Function
È possibile controllare e gestire le proprietà delle variabili nei blocchi MATLAB Function. In questo esempio, verificare che l'argomento di input vals
erediti le sue proprietà di tipo e grandezza:
Fare doppio clic sul blocco MATLAB Function.
Aprire il pannello Symbols e il Property Inspector. Nella scheda Function, fare clic su Edit Data.
Il pannello Symbols visualizza i nomi delle variabili nella colonna Name. La colonna Type determina l'assegnazione della porta dell'argomento della funzione e la sua posizione nella dichiarazione della funzione. In questo esempio,
vals
è assegnato a una porta di input.mean
estdev
sono assegnati alle porte di output. Se si modifica la voce Type per una delle due variabili, cambia anche la dichiarazione della funzione.Controllare le proprietà per
vals
. Nel pannello Symbols, fare clic sulla rigavals
. Il Property Inspector si aggiorna per mostrare le proprietà divals
. La proprietà Scope corrisponde alla colonna Type.
Per ulteriori informazioni sulla creazione di variabili nel blocco MATLAB Function e sull'impostazione delle proprietà, vedere .
Simulazione del modello
In Simulink, fare clic su Run per simulare il modello. Il modello genera i dati della funzione nei due blocchi Display.
Il blocco traccia inoltre i dati in una finestra separata.
Vedi anche
MATLAB Function | Editor del blocco MATLAB function | add_block
Argomenti complementari
- Comparison of Custom Block Functionality
- Call MATLAB Function Files in MATLAB Function Blocks
- Configure MATLAB Function Blocks Programmatically