0

ベクトル内の各要素を操作し、ベクトルを返すコードを matlab で記述しようとしています。基本的に、ベクトルがある場合 x = [1 2 3 4 5]'; 2 * x(i) * i を実行したいと思います。ここで、i はベクトルの i 番目の要素です。そして、y = [2 8 18 32 50]'; を返します。

今私はコードを持っています:

N = length(x);
for i=1:N
    y(i,:) = (i*2).*x(i,:);
end

私はMatlabを初めて使用するので、要素ごとの乗算などを実行できる構文を学習しようと研究を行ってきましたが、それは困難でした. 1:numel(x) が i の代わりになることを忘れることはできません。繰り返しますが、私はmatlabを初めて使用するので、学習に役立つ答えについての説明は大歓迎です。ありがとう!

4

1 に答える 1

2

方法は次のとおりです。

y = x.*(1:numel(x))*2

理由は次のとおりです。ベクトルまたは行列のすべての要素に対して操作を実行したいことがよくあります。Matlab では、要素単位の操作でこれを行うことができます。たとえば、 vector の各エントリを vectorxの対応するエントリで乗算するとしますy。つまり、、、x(1)*y(1)などx(2)*y(2)です。.これを行うには、乗算の前に記号を使用する必要があります。実際、.数学記号の前に a を付けて、ベクトルまたは行列の各要素に対して操作を実行することを Matlab に伝えることができます。

于 2013-10-16T03:56:34.750 に答える