アプリ版:「スタンプのみでお礼する」機能のリリースについて

matlabのfor文を使用し,計算をしています. for文を使用し計算すると,
ans=
ans=
  ・
  ・
  ・
のような形で結果が出て,そのままファイルに出力すると最後の演算の結果のみが出力されてしまいます.
この結果を縦に並べて行列の形で格納しなおしたのですが,この場合どのような式を組んだらいいのを教えていただければと思います.

A 回答 (3件)

forループ内で使ってるループ変数が何かわかりませんが、


例えば
for n=1:10;
みたいにしているなら、
A(n)=【計算結果】;
みたいにすればやりたいことはできます。

(最終的にはもっといろいろ仕込みが必要ですが、これでやりたいことはできます)

参考になれば幸いです。

この回答への補足

すみません。プログラムのないようですが,
for i =0:100:900
sum(i+1:i+100,:);
end
といった感じで1000個のデータの100行ずつ和を求めるようなプログラムです。

補足日時:2012/12/30 12:48
    • good
    • 1

再びKulesです。



for i =0:100:900
sum(i+1:i+100,:);
end

補足要求です。
・sumは変数ですか、関数ですか?(構文的に関数はあり得ないですが)
・和を求めるデータは一列ですか、複数列ですか?

まあいろいろやり方はありますが、
forループの前でIdx=0:100:900
とでもしといて、
for n=1:length(Idx);
A(n)=【計算結果】;
end
として、【計算結果】の部分に「正しい計算内容」を入れてやれば
所望の動作をします。
おそらく今のままではsumの使い方が不正です。

参考になれば幸いです。

この回答への補足

回答ありがとうございます.
まず,もとのデータが1000行4列のデータでそれを100行ごとに4列別々に合計していきたいと考えています.
構文ですが,
m=DATA;
for y=0:100:900
DATA1=sum(m(y+1:y+100,:))
end
といったようにまず,mに元のデータを格納し(その前にも計算していますので),それを上記のように合計するイメージでした.
ですので,自分としては関数のつもりだったのですが,,,
勉強不足なものでアドバイスいただけたらと思います.

補足日時:2013/01/02 15:43
    • good
    • 0

三度Kulesです。



>sum(i+1:i+100,:);

>sum(m(y+1:y+100,:))
は全く意味合いが違いますよ?
前者はsumという変数のi+1~i+100行を全て
後者はmという変数のy+1~y+100行の列ごとの和(関数sumを使用)
です。
書くなら正しく書いて下さいね。
ととりあえず苦言を呈しておいて。

回答としては前回私が書いたものと大体一緒です。
for y=0:100:900とすると
出力結果を格納するインデックスを指定しずらいので、
Idx=0:100:900を予め作っておき、
for n=1:length(Idx)
とすることで出力結果のインデックスを直に指定できるようにしておくといいでしょう。
ただ、入力mが1000行複数列ということなので、
出力結果も行列になるはずなので、予め出力変数のサイズを確定させておいた方がよさそうです。
まあ最初何が入っててもいいんですが、とりあえず0埋めするってことで
zerosを使うのがいいでしょう。
DATA1=zeros(length(Idx),length(DATA(1,:)));
で、ループ内では
DATA1(n,:)=【計算結果】
のようにすればいいと思います。

参考になれば幸いです。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!