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

現在matlabを使用してfor文で1から3000まで繰り返し、sigmaを求めるというプログラムを作っているのですが、うまくいきません。これだとn=3000のsigmaの値しかでてきません。sigmaにfor文で繰り返し求めたすべての値を格納したいです。初心者で低レベルな質問ですみません。どなたか教えていただけませんか。

sigma=0;

for n=1:3000,
if n <=300
dsig=1;
elseif n <= 950
dsig=-1;
elseif n <= 1700
dsig=1;
elseif n <= 2550
dsig=-1;
elseif n <= 3000
dsig=1;
end

sigma =sigma + dsig;
end

A 回答 (4件)

こんな感じでしょうか?


---------------------
function getsigma1()
fid = fopen('sigmaout.csv','w');
fprintf(fid,'Steps,dsig,sigma\n');
sigma = 0;
for n = 1:3000
  if n <= 300
    dsig = 1;
  elseif n <= 950
    dsig = -1;
  elseif n <= 1700
    dsig = 1;
  elseif n <= 2550
    dsig = -1;
  elseif n <= 3000
    dsig = 1;
  end
  sigma = sigma + dsig;
  fprintf(fid,'%d,%f,%f\n',n,dsig,sigma);
end
fclose('all');
--------------------------------
function getsigma2()
sigma = 0;
for n = 1:3000
  if n <= 300
    dsig = 1;
  elseif n <= 950
    dsig = -1;
  elseif n <= 1700
    dsig = 1;
  elseif n <= 2550
    dsig = -1;
  elseif n <= 3000
    dsig = 1;
  end
  sigma = sigma + dsig;
  if(n ~= 1)
    sigma(n) = sigma(n-1) + dsig;
  else
    sigma(n) = dsig;
  end
end
fprintf('%f\n',sigma);
    • good
    • 0
この回答へのお礼

結局、c言語ですることで解決しました.協力してくれた方々ありがとうございました.

お礼日時:2004/06/23 15:53

>どうしてもn=3000の値が繰り返されてしまって。


もしかして…nの要素分(3000個)、sigmaの配列を作っていないとかw

matlabの構文ははっきり知りませんが、そこから再度調べ直してみては如何でしょうか?
    • good
    • 0

「補足」にあったプログラムをCに置き換えて実行してみましたが…この様な結果を欲しているのでしょうか?


(下記URL参照)

参考URL:http://fin215.hp.infoseek.co.jp/sample.txt

この回答への補足

はい。まったくそのとおりでございます。
どうしてもn=3000の値が繰り返されてしまって。

補足日時:2004/06/21 00:34
    • good
    • 0

このfor文は繰り返されている間dsigの値は変化しますが「入力されている」だけ。

よってsigmaの値は「n=3000のsigma」しか入力されません。

この回答への補足

少し、考えてこのようにやってみたのですが…。if文のなかにいれてやればと考えたのですが。これだとsigmaとnの要素数が違ってしまうからだめなんですよね。要素数を合わせるのにはどのようにすればよろしいのでしょうか?すみません。

sigma=0;
for n=1:3000,
if n <=300
dsig=1;
sigma(n) =sigma + dsig;
elseif n <= 950
dsig=-1;
sigma(n) =sigma + dsig;
elseif n <= 1700
dsig=1;
sigma(n) =sigma + dsig;
elseif n <= 2550
dsig=-1;
sigma(n) =sigma + dsig;
elseif n <= 3000
dsig=1;
sigma(n) =sigma + dsig;
end
end

補足日時:2004/06/20 23:36
    • good
    • 0

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