我想在MATLAB創建以下矩陣:通過輸入一個命令來創建以下矩陣。不要輸入所有的單個元素明確
M= [ 0 0 1 10 20
0 0 3 8 26
0 0 5 6 32
0 0 0 0 0]
但我不手動所有元素要輸入。
我試圖M (1:3,3:5)=[x;y;z]
其中
x
是1至5y
的linspace是10〜6z
是20至32 的linspace的linspace
但它沒有工作(最後一行零缺失)。我如何巧妙地創建M
?
我想在MATLAB創建以下矩陣:通過輸入一個命令來創建以下矩陣。不要輸入所有的單個元素明確
M= [ 0 0 1 10 20
0 0 3 8 26
0 0 5 6 32
0 0 0 0 0]
但我不手動所有元素要輸入。
我試圖M (1:3,3:5)=[x;y;z]
其中
x
是1至5y
的linspace是10〜6z
是20至32但它沒有工作(最後一行零缺失)。我如何巧妙地創建M
?
我假設這是一些編程任務,否則我沒有看到爲什麼這需要在一行中完成的原因。我還假設連接一個零向量是不需要的。說到這裏有幾個建議:
假設你的向量定義,像這樣:
x = 1:2:5;
y = 10:-2:6;
z = 20:6:32;
「最乾淨」的方式(無零矢量級聯的假設下)大概是:
M = subsasgn(zeros(4,5),substruct('()',{1:3,3:5}),[x',y',z']);
或者,如果使用外部函數,您可以使用insertrows
submission on FEX:
M = insertrows(insertrows([(x)',(y)',(z)'],0,4)',0,[0,0])';
有兩個命令,並假設M
不存在,你可以這樣做:
M(2:4,3:5)=([fliplr(x)',fliplr(y)',fliplr(z)']);
M = flipud(M);
奇怪的問題,但在這裏你去,在一個命令。這是假定M
是以前不存在的,那x
,y
和z
被定義爲x = 1:2:5; y = 10:-2:6; z = 20:6:36;
:
M(1:4,3:5) = [[x;y;z].'; zeros(1,3)];
當然,你可以避開x
,y
和z
通過對飛定義它們的值:
M(1:4,3:5) = [[1:2:5; 10:-2:6; 20:6:36].'; zeros(1,3)];
如果您正在尋找不需要其他輸入的單線程並在內部創建linspace
值,則可以使用下面的一個 -
M(1:4,3:5)=[bsxfun(@plus,[1 10 20],bsxfun(@times,[2 -2 6],[0:2]'));zeros(1,3)]
輸出 -
M =
0 0 1 10 20
0 0 3 8 26
0 0 5 6 32
0 0 0 0 0
這是什麼語言? MATLAB? – 2014-08-31 14:12:51
什麼是你的郎? – Kasramvd 2014-08-31 14:12:58
matlab c programming – 2014-08-31 14:14:04