Gli elementi della prima colonna della matrice
B si possono generare accedendo alla matrice
A come
A(:) (la matrice
A deve essere trasposta in quanto l'operatore "
:" opera sulle colonne)
Le righe 2 e 3 si possono generare all'interno di un semplice loop.
Lo script in calce illustra una possibile implementazione del metodo proposto.
Le istruzioni
tic e
toc, rispettivamente all'inizio ed alla fine dello script consentono di misurare il tempo di esecuzione dello script.
%
% Inizializzazione calcolo tempo di esecuzione
%
tic
%
% Definizione matrice A e matrice di controllo B
%
A=[11 22 33; 44 55 66; 77 88 99]
% A=[11 22 33; 44 55 66; 77 88 99;100 200 300]
% A=[11 22 33 100; 44 55 66 200; 77 88 99 300]
%
% Identificazione del numero di righe (r) e colonne (c) della matrice A
%
[r,c]=size(A);
%
% Creazione prima colonna della matrice target (C1). La matrica A deve
% essere trasposta in quanto l'istruzione "A(:)" concatena le colonne della
% matrice
%
A=A';
C1=A(:);
%
% Creazione della sezione base della terza colonna della matrice target (C)
%
c_list=1:c;
%
% Allocazione memoria per le colonne 2 e 3 della matrice target (C)
%
C2=zeros(r*c,1);
C3=zeros(r*c,1);
%
% Loop per la costruzione delle colonne 2 e 3 della matrice target (C)
%
for i=1:r
idx=i+(i-1)*(c-1):i+(i-1)*(c-1)+(c-1);
C2(idx)=ones(c,1)*i;
C3(idx)=c_list;
end
%
% Costruzione della matrice target (C)
%
C=[C1,C2,C3]
%
% Calcolo tempo di esecuzione
%
toc
Hope this helps.