Je voudrais ajouter deux vecteurs avec différentes longueurs dans Matlab ou Octave. Par exemple qui devrait aboutir à un vecteur cc contenant p> peut-il comprendre comment faire cela? P> MISE À JOUR: Ceci est le code que j'ai fini par les signaux que je convertit ensuite en images de gris à gris. P> merci beaucoup tout =) p> p>
4 Réponses :
Cela n'a aucun sens mathématiquement, mais si vous insistez, vous pouvez le faire:
cc = aa + [bb zeros(1,2)];
Cool. C'est parce que j'ai 2 matrices, qui sont réellement des images grises que j'aimerais ajouter. Alors maintenant, je voudrais généraliser votre solution à matrice =)
Oui, par exemple, lors du traitement des signaux en tant que vecteurs (désignant la transformation Z)
Je n'ai pas utilisé Matlab dans dix ans, mais je pense que vous devrez faire quelque chose comme:
Il donne "Erreur: parenthèse ou support non équilibré ou inattendu". Mais "CC = AA + [BB Zeros (1, Longueur (BB))];" travaille =)
@Louise, mon mauvais, il aurait dû être longueur code> et non
taille code>. Que
zéros (1, longueur (bb)) code> fonctionne est juste une coïncidence depuis
longueur (bb) = longueur (AA) - longueur (BB) code>.
Pour l'affaire 1-D traitant d'un ensemble de vecteurs, les autres réponses indiquent les solutions correctes (impliquant un remplissage du vecteur plus court avec des zéros ou effectuer l'addition à l'aide d'un sous-index dans le vecteur le plus long). Cependant, depuis que vous avez mentionné dans un commentaire que vous souhaitez finalement ajouter deux images en niveaux de gris ensemble, je pensais que je vous montrerais une solution plus générale 2-D pour les matrices.
Tout d'abord, je vais charger des informations intégrées Matlab Échantillon d'images et obtenez leurs tailles: p> avis que j'ai converti l'image RVB en niveaux de gris en utilisant avis que j'ai inclus et vous pouvez les afficher avec les éléments suivants: p> Remarque: strong> Une chose importante à considérer est le type que vous utilisez pour les images. Normalement, les données d'image chargées dans MATLAB sont de type rgb2gray code>
. Ensuite, je vais faire une nouvelle matrice de zéros dont la taille est le maximum de la taille des deux images: p> 'uint8' < / Code> Dans l'appel à
zéros code> a >, puisque vous voulez que la matrice des zéros soit le même type que vos images afin que les opérations ultérieures sur eux fonctionnent correctement. La matrice
Newimage code> est maintenant assez grande pour contenir l'une des deux images. Enfin, les images peuvent être ajoutées à la nouvelle image, comme: p>
UINT8 Code>
. Toutefois, vous remarquerez peut-être que l'ajout de deux images entières non signées 8 bits que je le faisait ci-dessus peut entraîner une saturation où les pixels dépassent la valeur de 255 (valeur maximale d'un entier non signé 8 bits). Le résultat est que certaines parties de l'image ont l'air blanche brillante et perdent des détails (remarquez certains des poivrons qui chevauchent la plus petite image ci-dessus). Vous voudrez peut-être éviter cela en éduquant les valeurs dans vos images avant d'y ajouter ou en convertissant vos images en tapez double code>
pour effectuer les opérations, puis les éteindre avant de renvoyer l'image. p> p>
WOW! Merci beaucoup pour cette solution très détaillée! C'était exactement ce que je voulais faire. =)
Si c'est une étant donné que AA est plus grand que BB, alors je ferais ceci: