Le chargement des données pour un Simulink Table de Recherche à partir d'un fichier
J'ai construit un Matlab/Simulink modèle que j'utilise pour simuler la performance d'un sous-marin robotisé véhicule qui utilise l'acoustique pour diverses touche de navigation et de localisation des fonctions.
Comme les caractéristiques de l'océan changement à la saisonnalité et à la géolocalisation, je voudrais que ces données soient chargé dynamiquement dans le modèle à partir d'un fichier de données ASCII (séparés par des espaces, des données organisées en lignes et en colonnes).
Simulink a un certain nombre de Table de Recherche Blocksets, mais aucun d'entre eux semblent fournir une "lecture à partir d'un fichier" option directement. Avoir à utiliser l'Éditeur de Tableau serait de prendre le modèle dans la mauvaise direction.
Est-il une autre façon, peut-être à l'aide de Matlab, pour charger les données dans le Blockset à partir d'un fichier?
Pour un 1-D de la table, je suis à la recherche de quelque chose qui s'apparente à l'Matlab commandes
A = load(filename)
A(:,1) % for the index
A(:,2) % for the table values
AKE
OriginalL'auteur Assad Ebrahim | 2010-09-28
Vous devez vous connecter pour publier un commentaire.
Si je comprends bien, il semble que vous voulez avoir un La Table de bloc avec index et table des valeurs qui peuvent être mis à jour dynamiquement au cours de la simulation. Je crois que vous pouvez le faire à l'aide d'un À partir d'un Fichier de bloc, un Demux bloc, et un La Table de bloc Dynamique. Disons que vous avez un .tapis de fichier contenant un tableau de la forme suivante:
Pour chaque colonne, il y a une heure,
N
éléments de la table de recherche d'indices, etN
éléments de la table des valeurs. Une fois chargé à l'aide de la À partir d'un Fichier de bloc, la sortie de la longueur2*N
peut être divisé en deux sorties de chaque longueurN
(c'est à dire que les indices et les valeurs du tableau) à l'aide de la Demux bloc. Ces deux tableaux peuvent ensuite être utilisés pour laxdat
etydat
entrées à la La Table de bloc Dynamique, donc la création d'une table de recherche dont les index et les valeurs de la table peut être mise à jour à partir d'un fichier que la simulation s'exécute.Réponse au commentaire de AKE...
Les horodateurs sont présents dans le tableau ci-dessus parce que j'étais sous l'impression que vous avez voulu changer la table de recherche de données comme une fonction de temps de simulation (par exemple, utilisation d'un ensemble d'indices et les valeurs de la table de 0 à 10 secondes, puis une autre pendant 10 à 20 secondes). Si vous voulez faire cela, il va besoin des spécifications de l'époque à laquelle les données seront modifiés.
Cependant, si vous souhaitez charger un set de table de données à partir d'un fichier au début de la simulation, alors votre .tapis de fichier ne devrait avoir besoin que d'une seule colonne avec un timbre de temps de 0. Votre échantillon de données dans
A
peuvent être facilement modifiés en conséquence:À l'égard de votre préoccupation quant à la Demux bloc, vous avez réellement n'avez pas besoin de spécifier
N
. Vous avez seulement besoin de spécifier qu'il y aura 2 sorties, et il convient donc de diviser l'entrée dans la moitié. Par exemple, si l'entrée est à 10 élément du vecteur, et vous avez deux sorties spécifiés pour le bloc, vous obtiendrez deux 5-élément des vecteurs comme la sortie.J'ai mis à jour pour répondre à vos préoccupations ci-dessus.
simple et sympathique! ces deux préoccupations, cela fonctionne bien. En fait, je pense que le moment index doit également résoudre le temps dynamique basé sur le problème de mise à jour. (J'avais en tête une autre approche donc raté votre implication jusqu'à ce que votre élaboration ci-dessus). Merci 😉
+1 pour des raisons de simplicité et +1 pour revenir à clarifier -- qui a mis en évidence la valeur.
Ravi de vous aider. 😉
OriginalL'auteur gnovice
Les données de la table peut être une variable dans l'espace de travail de MATLAB, et vous pouvez remplir l'espace de travail par le chargement de tous les fichiers que vous voulez avant d'exécution de la simulation. Donc dans votre exemple, la variable peut être utilisée comme table de données.
Écrire un script de démarrage pour remplir votre espace de travail avant l'exécution de la simulation, dans ce script, vous pouvez charger les données à partir de n'importe quel tapis de fichier que vous souhaitez.
J'ai mal compris votre question, je suis entièrement d'accord avec gnovice les conseils, c'est la bonne façon de le faire.
OriginalL'auteur MikeT