0
votes

Comment créer une couche de nombres autour d'un tableau?

dire que j'ai un tableau B : xxx

Je veux utiliser une boucle pour créer une couche de zéros autour de ce tableau, créant un tableau 2D avec le Original 1 au centre.

Comment puis-je faire cela?


1 commentaires

Bonjour, bienvenue à Stackoverflow !! Ce serait génial si vous pouviez lire ces directives avant de poser une nouvelle question. Merci.


3 Réponses :


1
votes

À condition que vous disposiez de la boîte à outils de traitement d'image, utilisez Padarray Code> : xxx pré>

Si vous n'avez pas la boîte à outils de traitement d'image, il est facilement effectué à la main: p>

B = 1;
[X,Y] = size(B); % Get sizes
padvalue = 0;
A = padvalue*ones(X+2*padsize ,Y+2*padsize ); % Initialise with a size of 2 larger
for ii = 1:X
    for jj = 1:Y
        A(ii+padsize ,jj+padsize ) = B(ii,jj); % Grab correct element
    end
end


0 commentaires

0
votes

Vous pouvez concaténer quelques tableaux code> sur la matrice d'origine, je vais utiliser le même padvalue code> et PADSize code> Syntaxe comme réponse d'Adriaan pour une comparaison facile:

padvalue = 0; % Value to pad around the outside
padsize = 1;  % Depth of padding

B = 1;        % Some matrix
[r,c] = size(B);
A = [ padvalue*ones(padsize,c+2*padsize); 
      [padvalue*ones(r,padsize), B, padvalue*ones(r,padsize)];
      padvalue*ones(padsize,c+2*padsize) ];


0 commentaires

2
votes

Si vous avez un tableau et souhaitez créer une couche de zéros autour, vous pouvez utiliser blkdiag : xxx

si b est juste un scalaire et vous voulez créer une couche de pavades autour de lui, vous pouvez utiliser repmat et indexation. xxx


0 commentaires