2017-02-28 16 views
-1

私は54x100のサイズの行列Aを持っています。特定の条件については、Aの各行に対して操作を実行します。このforループの出力を保存する必要があります。私は以下を試したが、うまくいかなかった。forループ演算の出力をmatlabに保存するには

S=zeros(54,100); 
for i=1:54; 
Ri=A(i,:); 
answer=mean(reshape(Ri,5,20),1); 
S(i)=answer; 
end 
+0

が重複する可能性のお手伝いをする必要がありますhttp://stackoverflow.com/questions/([Matlabのforループだけ私のベクターにゼロを出力します] 26614493/matlab-for-loops-only-outputs-my-into-my-vector) – MarcinKonowalczyk

答えて

0

まず、あなたの質問から判断すると、私はthisようthisか、単に詳細なドキュメントのようないくつかの基本的なMatlabのチュートリアルをお勧めします。

あなたの問題を実際に手伝ってください。問題は、あなたの答えは、単一の番号(1x1の行列)が、ベクトルではなかったので、ディメンションの不一致エラーを得たことだった

%% Make up A (since I don't know what it actually is) 
n = 54; m = 100; 
A = randn(n,m); % N x m matrix of random numbers 

%% Loop over each row of A 
S = cell(n,1); 
for j = 1:n; 
    Rj = A(j,:); % j'th row 
    answer = mean(reshape(Rj,5,20),1); % some operation 
    S{j} = answer; % store the answer in cell S 
end 

:あなたはこれを行うことができます。上では、answerをサイズnのセルオブジェクトに入れています。その後、j行目の操作結果は、S{j}を呼び出すことで取得できます。また

  • が、それはまた、虚数単位を表しているので、イテレータとしてiを使用してないを行います。
  • 値をハードコードするのではなく、既存の値を参照します。例えば、ここでは、forループ宣言のnを参照しています。これは、for j = 1:54と書くのではなく、私のコードを53x100配列に使用すると駄目になってしまったからです。
  • あなたのコードを投稿するときは、最小限のを追加することをお勧めします。の例 - 問題を再現するために人々がMatlab(または何らかの言語のインタープリタ)にコピー&ペーストできるコードです。例えば、Aが何であるかをコードに伝えるものは含まれていません。
  • Thisは、一般的にはかなり良い読み物であるとの将来
関連する問題