0

行列があり、ループAを使用してすべての行を 2 倍にしたいと考えています。for

A = [1 2 3; 
     4 5 6; 
     7 8 9];

したがって、基本的に matlab は次のように出力する必要があります。

[2  4  6; 
 8  10 12; 
 14 16 18];

私は試した:

A = [1 2 3 ; 4 5 6  ; 7 8 9];
for i=1:3
    x= A([i],:)*2;
end 

xとして出力します[14 16 18]

どうすれば目的の出力を得ることができますか?

4

3 に答える 3

2

for ループを使用すると、次のようになります。

for n=1:size(A,1)
    x(n,:)=2*A(n,:);
end

しかし、for ループを使わずに同じ結果を得る方がはるかに簡単です。

x=2*A;
于 2013-01-14T23:24:25.660 に答える
0

for ループに入るたびに、回答が上書きされると考えてください。次のようなことができるかもしれません:

 for i=1:3
     x([i],:) = A([i],:)*2;
 end  
于 2013-01-14T23:29:24.233 に答える
-1

for ループは、MAtlab では非常に非効率的です。matlab を使用する場合は、この問題を回避する方法を学ぶことをお勧めします。このような小さなものについては、有害な影響は見られないかもしれませんが、大規模なものについてはノーです。

とにかく、あなたの問題のために、あなたはただ行うことができますx = A*2. それはあなたに解決策を与えるはずです。

于 2013-01-14T23:25:54.237 に答える