我很感興趣如何從矩陣陣列創建對角線矩陣。 我創建矩陣在MATLAB的數組:從MATLAB矩陣陣列創建對角線矩陣
X<62x62x1000>
它包括1000點矩陣尺寸爲62x62
我要創建的尺寸62000x62000與來自陣列X 1000點的子矩陣沿主對角線的矩陣。
你有什麼線索如何做到這一點,除了M=blkdiag(X(:,:,1), X(:,:,2), X(:,:,3)...)
,因爲這將是很多寫作。
我很感興趣如何從矩陣陣列創建對角線矩陣。 我創建矩陣在MATLAB的數組:從MATLAB矩陣陣列創建對角線矩陣
X<62x62x1000>
它包括1000點矩陣尺寸爲62x62
我要創建的尺寸62000x62000與來自陣列X 1000點的子矩陣沿主對角線的矩陣。
你有什麼線索如何做到這一點,除了M=blkdiag(X(:,:,1), X(:,:,2), X(:,:,3)...)
,因爲這將是很多寫作。
一個可能的解決方案
M = kron(speye(1000),ones(62));
M(logical(M)) = X(:);
隨着kron
一個62000 * 62000稀疏矩陣創建M
包含在其對角線上的人的1000塊,然後用X
的元素替換元素。
一個很有爭議的eval調用可以解決這個問題很懶惰,但我懷疑有一個更好的方法來做到這一點:
evalstring = ['M=blkdiag('];
for i = 1:999
evalstring = [evalstring, 'X(:,:,', num2str(i),'),'];
end
evalstring = [evalstring, 'X(:,:,1000));'];
eval(evalstring);
https://de.mathworks.com/help/matlab/ref/ diag.html –