J'ai besoin de construire une matrice TOEPLITZ dans MATLAB appelé J'ai fait le code comme ci-dessous: p> mais je Pensez qu'il y a une erreur dans le code puisqu'il ne me donne pas les résultats escomptés. P> Comment puis-je obtenir une matrice TOPLITZ? P> P> h code>, où h code> a la taille 256 x 256 code>, à partir d'un vecteur h code> de taille 64 x 1 code>. J'ai besoin de remplir la matrice h code> par la ligne l code> -th d'élément d'élément h code> et p code> -th colonnes éléments Comme ci-dessous: H (l, p) = h (lp) si 0 <= (lp) = <64 code>. Sinon, h (l, p) = 0; code> p>
3 Réponses :
Vous pouvez simplement utiliser où vous avez étendu TOEPLITZ CODE> A >: h code> de la taille 64 avec 0 code> jusqu'à la taille 256. p> p>
Solution intelligente bien sûr, mais l'OP énoncé littéralement dans leur titre "Comment construire une matrice toeplitz manuellement b>" (mettre l'accent sur la mine). Je suppose que l'op doit clarifier si Teeplitz code> est assez manuel ou non ...
Un problème se produit pour lp = 0 code>, car h (0) code> appellerait l'élément zeroth de h code>, et puisque MATLAB utilise 1 -Marbased Indexation, qui se bloque. Il suffit de supprimer le signe de l'égalité dans la vérification:
Voici une façon manuelle qui utilise Vectorisation avec Expansion implicite au lieu de boucles:
t = 1:numel(h); H = h(abs(t-t.')+1);