Génération Matlab de signaux pseudo-aléatoires (séquence M)
Il existe deux méthodes principales expliquées ici, l'une consiste à utiliser l'édition de fichiers m, l'autre consiste à utiliser simulink pour générer
1. Modifier avec le fichier m
Np=63;% période de cycle
delta_T = 1 ; % de tics d'horloge
a=1;% amplitude
%Initialiser la séquence M
M(1)=1;
M(2)=0;
M(3)=0;
M(4)=1;
M(5)=1;
M(6)=0;
M_XuLie(Np) = 0;
pour n = 1 : Np
temp = xor(M(6), M(5));
if(temp == 0)
M_XuLie(n) = a;
autre
M_XuLie(n) = -a;
fin
M(6) = M(5);
M(5) = M(4);
M(4) = M(3);
M(3) = M(2);
M(2) = M(1);
M(1) = temp;
fin
figure(4)
escaliers(M_XuLie)
ylim([-2 2])
Description :
1. Principe : Puisqu'il est écrit en code, l'expression du principe peut ne pas être très intuitive. Le principe sera donné sous forme de simulation plus tard
.2. Période : S'il y a N registres à décalage, alors la période est 2^N-1
3. Suite du cycle :
r = 3 ; % nombre de cycles
u=repmat(M_XuLie,1,r+1);% attribue la séquence M à l'entrée comme signal d'entrée
2. Utilisez simulink pour générer une séquence M
1 Choisissez 6 registres à décalage, qui sont des registres 1/Z. Disposez-les dans l'ordre et définissez les conditions initiales sur tous les 1
.2 Liez d'abord ces 6 registres à décalage, connectez la première sortie à la deuxième entrée, et ainsi de suite jusqu'à ce que la sixième soit connectée à OUT, puis connectez un oscilloscope ici pour observer la forme d'onde du signal ou connectez-le à l'espace de travail (en cet exemple est connecté à l'espace de travail). Définissez le nom de la variable et le format de sortie comme suit.
Remarque : essayez de choisir la sortie sous forme matricielle, sinon il ne sera pas pratique d'appeler.
3 Sélectionnez un opérateur logique et ajustez-le sur XOR à partir des paramètres, 2 entrées
4 Continuez à vous connecter
5 Définir les paramètres, définissez principalement la taille du pas et la durée totale d'exécution (cliquez sur le menu Paramètres de simulation-configuration)
6 Cliquez pour exécuter. Ce qui est affiché dans la portée est la séquence m ! Ou entrez escaliers(M_seque)
dans la ligne de commandeRemarque : en fait, il existe certains problèmes d'utilisation réelle avec cette méthode, c'est-à-dire que le signal de sortie est de type booléen, c'est-à-dire une séquence logique, et ne peut pas être utilisé comme entrée de la fonction de transfert si c'est le cas. dans un fichier m, il peut être utilisé via des méthodes doubles et autres. Pour la conversion, Simulink devrait disposer d'une méthode pour le convertir, mais la requête correspondante n'a pas encore été effectuée.
pour k=1:length(x) gfpretty(x(k,:));end
m séquence pseudo-aléatoire code source Matlab
%5 séquence m de commande
% Entrez ce qui suit dans la fenêtre de commande MATLAB :
% fbconnection=[0 1 0 0 1];
% mseq="m"_sequence(fbconnection);
% mseq
fonction mseq="m"_sequence(fbconnection)
n=longueur(fbconnection);
N=2^n-1;
register=[ones(1,n-1) 1]; %L'état initial du registre à décalage
mseq(1)=register(n); %mLe premier symbole de sortie de la séquence
pour i="2:N"
newregister(1)=mod(sum(fbconnection.*register),2);
pour j="2:n",
newregister(j)=register(j-1);
fin;
register="newregister";
mseq(i)=registre(n);
fin
Enregistrer sous m_sequence.m;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!