例如,我有2x2矩陣,現在我必須增加其左側和右側各1列,然後頂部和底部各1行,現在我將有一個4x4矩陣與舊的矩陣位於新的矩陣的中心。有什麼辦法可以快速完成,而不是創建新的並將值從舊的轉移到新的?
非常感謝你智能擴展矩陣在matlab
回答
無論你做什麼,你都將不得不爲新的陣列分配新的內存。另外,如果你的矩陣只有2×2,任何方法的速度都足夠好。或者你還想處理更大的矩陣?然後,考慮兩種方法下面的測試,你可以使用:
A = rand(5000);
% explicitly add zero vectors on all sides of A
tic;
B = [zeros(1, size(A,1)+2);
zeros(size(A, 2),1) A zeros(size(A, 2),1);
zeros(1, size(A,1)+2)];
toc
Elapsed time is 0.204940 seconds.
% create the output array and assign the A array to correct sub-matrix
tic
B = zeros(size(A)+2);
B(2:end-1,2:end-1) = A;
toc
Elapsed time is 0.102501 seconds.
+1,用於建議分析您的代碼 – jedwards
請問您可以爲我解釋這行代碼嗎? 「B(2:end-1,2:end-1)= A;」 – Xitrum
@Aptos閱讀[MATLAB中的矩陣索引](http://www.mathworks.se/company/newsletters/articles/Matrix-Indexing-in-MATLAB/matrix.html;jsessionid=92d1cab9d60af8757dc730078854)。該命令在兩個維度上從索引2開始並結束於結尾1,分配給「B」。由於B的維數是A + 2的維數,因此可以將其分配給正確大小的子矩陣(即大小(A)) – angainor
另一種選擇是
B = padarray(A,[1,1],'both');
對於速度(至少在我的電腦),這是由angainor建議的兩種方法之間,而且它的優點是你不需要創建一個新的變量,如果你不想。
- 1. Matlab的3D矩陣擴展
- 2. MATLAB用零擴展矩陣
- 3. 展開矩陣(MATLAB)
- 4. MATLAB矩陣預分配比動態矩陣擴展慢
- 5. 在matlab中擴展時間元素的矩陣
- 6. 按列擴展矩陣
- 7. 擴展投影矩陣
- 8. R中擴展矩陣
- 9. 在MATLAB矩陣
- 10. 如何在Haskell中擴展矩陣
- 11. 在C中的擴展矩陣
- 12. 擴展/摺疊在SSRS矩陣2008
- 13. 如何將列向量擴展到matlab中的矩陣
- 14. 矩陣在Matlab中
- 15. cellarray在矩陣matlab
- 16. 以矩陣(在Matlab)
- 17. 矩陣矩陣在Matlab中的數組?
- 18. 自動展開matlab矩陣的左側
- 19. LocalDateTime擴展功能和智能鑄件
- 20. Matlab - 矩陣陣列
- 21. MATLAB從矩陣
- 22. Matlab大矩陣
- 23. 將矩陣擴展爲塊矩陣 - 索引問題
- 24. Matlab矩陣乘法元素明智地從不同大小的矩陣
- 25. 電池陣列擴展Matlab的
- 26. Matlab:可擴展陣列,丟失數據
- 27. 滾出3點矩陣的座標明智最大在MATLAB
- 28. 將3d矩陣擴展到2維
- 29. Scala的微風擴展矩陣
- 30. 增強矩陣動態大小擴展
有關使用圖像處理工具箱執行此操作的一些方法,請參閱http://stackoverflow.com/q/8287289/462117 – nandhp