Found the answer. Thanks
Afficher commentaires plus anciens
Found the answer. Thanks
1 commentaire
James Tursa
le 26 Oct 2016
Modifié(e) : James Tursa
le 26 Oct 2016
Please post a short example for us so we know what exactly you are trying to do. E.g., post a small example input matrix and then post the result(s) you would be expecting. Note that trying to name variables x1, x2, etc in a loop fashion is not a good idea.
Réponses (1)
James Tursa
le 26 Oct 2016
Do you mean like this?
[rows cols] = size(a);
nDiags = rows + cols - 1;
b=fliplr(a);
x = zeros(min(rows,cols),nDiags);
for i=1:nDiags
d = diag(b,cols-i);
x(1:numel(d),i)=d;
end
Produces:
>> a
a =
1 2 3 4 5
12 -4 9 11 83
2 4 6 8 24
64 0 21 33 11
104 63 16 72 76
>> x
x =
1 2 3 4 5 83 24 11 76
0 12 -4 9 11 8 33 72 0
0 0 2 4 6 21 16 0 0
0 0 0 64 0 63 0 0 0
0 0 0 0 104 0 0 0 0
1 commentaire
James Tursa
le 26 Oct 2016
OK, how about this?
[rows cols] = size(a);
nDiags = rows + cols - 1;
b=fliplr(a);
c = cell(nDiags,1);
for i=1:nDiags
c{i} = diag(b,cols-i);
end
x = vertcat(c{:})';
Catégories
En savoir plus sur Startup and Shutdown dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!