كيفية تعيين مصفوفة لأقطار مصفوفة أخرى في matlab

-2

لدي مصفوفة D = zeros (30, 432); أريد أن أسند d = [ 1 1 0 0; 0 0 1 1; 0 0 0 0]; إلى أقطار المصفوفة D. لدي الكود أدناه لكنه لا يسمح لي بتعيين d لكل قيم قطرية في D.

[N,~,P,Q]=size(D);
diagIndex=repmat(logical(eye(N)),[1 1 P Q]);
D(diagIndex)=d;

سيكون الناتج لمصفوفة 30x432 مثل:

d 0 0 0
0 d 0 0
0 0 d 0
0 0 0 d

1 إجابة

0

يمكنك استخدام spdiags لإنشاء قطري [10 x 108] مصفوفة متفرقة ثم استخدم kron لقياس المصفوفة وملئها.

d = [ 1 1 0 0; 0 0 1 1; 0 0 0 0]
size_D=[30, 432];
sz = size_D./size(d);
diagonal = spdiags(ones(sz(1),1),0,sz(1),sz(2));
result = kron(diagonal ,d);
:مؤلف
فوق
قائمة طعام