2013-01-16 13 views
3

我需要使用只有一個命令創建以下矩陣具有特定元素的矩陣:需要而無需鍵入它明確地創建僅使用一個命令

M = [0 0 0 0 0 0;... 
    0 0 0 0 0 0;... 
    0 0 0 0 0 0;... 
    0 0 0 1 2 3;... 
    0 0 0 4 5 6;.... 
    0 0 0 7 8 9] 

我是新在這等我不能使用任何複雜的命令。

我試着用linspace加上zeros,但是效果不好。

請幫忙!!

+2

這個要求的基礎是什麼? –

+1

by single command你是指單行嗎? – bla

+1

如果提供動機,我會對此問題+1:爲什麼這是「單一命令」要求? – Shai

回答

2

也許你可以嘗試創建一個6x6的矩陣充滿zeros

M = zeros(6) 

然後,只需設置它的一部分1:9

M(4:6,4:6) = reshape(1:9, 3, 3)' 

(在'符號表示轉)

+0

(這是未經測試的,所以如果有人能告訴我這是行不通的話,我會很感激的) –

+0

不太合適。這最後是一個轉置數組。 –

+0

我的MatLab抱怨尺寸不匹配。我這樣做:'M(4:6,4:6)=轉置(重塑(1:9,3,3))'。但是這可能是在「複雜的命令」之下。 – paddy

0

更正Alex的答案:

M = zeros(6) 

M(4:6,4:6) = [1,2,3;4,5,6;7,8,9] 
+0

這是如何回答這個問題的?這不完全是一個單一的命令解決方案... – Shai

+0

這是最簡單的方法! –

3

不知道Matlab的,但在八度,你可以這樣做:

M = [zeros(3, 6); zeros(3), [1:3; 4:6; 7:9]] 
6

那是使用太複雜的命令嗎?

ans=padarray(reshape(1:9,3,3)',[3 3],'pre') 
+1

+1非常優雅! – Shai

+0

優雅與否,我認爲你的回答比較好...(+1) – bla

10

如果矩陣M沒有定義,你可以跳過zeros(6)(由AlexL建議),並直接進入

M(4:6, 4:6) = reshape(1:9, [3 3]).'; %' 
3

另一種簡單和緊湊oneliner,結合一些已經提到的事對於MATLAB和Octave:

M(4:6,4:6) = [1:3;4:6;7:9] 
相關問題