dire che abbiamo la seguente matrice casuale:Matlab aggiunta di righe e colonne elegantemente
1 2 3 4
5 6 7 8
9 8 7 6
5 4 3 2
mi vuoi trasformarlo in quanto segue:
1 0 2 0 3 0 4 0
0 0 0 0 0 0 0 0
5 0 6 0 7 0 8 0
0 0 0 0 0 0 0 0
9 0 8 0 7 0 6 0
0 0 0 0 0 0 0 0
5 0 4 0 3 0 2 0
0 0 0 0 0 0 0 0
Per qualche motivo non posso usare mathjax formatta in modo che sembri un po 'orribile, mi dispiace per questo. Il punto è che voglio aggiungere righe e colonne di zeri tra le mie righe e colonne attuali in modo da aumentare le sue dimensioni 2x.
Mi è venuto in mente il seguente codice, ma funziona solo con matrici molto piccole se lo utilizzo su un'immagine grande che non può terminare a causa di problemi di limitazione della memoria.
clear all
I=imread('image.png');
I=rgb2gray(I);
B=zeros(2*size(I));
[x, y]=find(-inf<I<inf);
xy=[x,y];
nxy=xy;
%coord change
nxy=2*xy-1;
B(nxy(:,1),nxy(:,2))=I(xy(:,1),xy(:,2));
Mi aspettavo di essere veloce perché è completamente vettorizzato con funzioni di maltlab ma fallisce miseramente. C'è un altro modo elegante per farlo?
Per vostra informazione, mathjax non funziona semplicemente perché overflow dello stack non supporta it :) E ' a volte mancano, ma un sacco di domande che potrebbero farne un uso pesante sono comunque fuori tema. (Il tuo non lo è.) –