matlabでは、マトリックスを宣言しなければなりません。どうすればいいですか?たとえば、できますかMatlab - 動的インデックス作成
function res = compute()
res(1) = 1;
res(2) = 2;
end
または最初にresを宣言する必要がありますか?
matlabでは、マトリックスを宣言しなければなりません。どうすればいいですか?たとえば、できますかMatlab - 動的インデックス作成
function res = compute()
res(1) = 1;
res(2) = 2;
end
または最初にresを宣言する必要がありますか?
はい。いろいろな方法がありますが、最初に配列を宣言する方法を学ぶことから始めることができますhere。あなたは、配列/行列を宣言する必要はありません
res = [1,2]
:あなたのような何かをしようとしているようなあなたの場合には
、それが見えます。あなたが今持っているものはうまくいくでしょう。あなたの行列を宣言する必要はありません
あなたは常にmatrix = []
でもスゴと空行列を宣言することができ、あなたは
a =
0 0 0
0 0 7
その結果
a(2,3) = 7
のようなものを行うことができますmatlabで。あなたのコードは動作します。
マトリクスにones
またはzeros
を使用してメモリを事前に割り当てた方が一般的に高速です。そうしないと、Matlabは行列のサイズが変わるたびにメモリを再割り当てしなければなりません。
例
% Slow
x(1) = 3; % x is now 1 by 1
x(5) = 9; % Matlab has to reallocate memory to increase x to be 1 by 5
x(10) = 2; % And another reallocation to increase x to be 1 by 10
% Better
y = zeros(1,10); % preallocate memory for the matrix
y(1) = 3;
y(5) = 9;
y(10) = 2;
% One-liner
z([1 5 10]) = [3 9 2]; % you can assign multiple values at once
事前割り当てはあなたがループ
のために使用する必要はありませんので、あなたは、コードをベクトル化することができた場合であっても良く、ループa = zeros(1,100)
for i=1:100
a(i) = i^2;
end
を使用する必要があり、ほとんどのときに役立ちます
a = (1:100).^2;