現在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件)
- 最新から表示
- 回答順に表示
No.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);
No.3
- 回答日時:
>どうしてもn=3000の値が繰り返されてしまって。
もしかして…nの要素分(3000個)、sigmaの配列を作っていないとかw
matlabの構文ははっきり知りませんが、そこから再度調べ直してみては如何でしょうか?
No.2
- 回答日時:
「補足」にあったプログラムをCに置き換えて実行してみましたが…この様な結果を欲しているのでしょうか?
(下記URL参照)
参考URL:http://fin215.hp.infoseek.co.jp/sample.txt
No.1
- 回答日時:
この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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) vba 最大値 条件分岐 4 2022/12/10 10:20
- Excel(エクセル) VBA EOMonthについて 5 2023/02/10 11:51
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- 一眼レフカメラ sony α99に書きレンズはアダプターなしで取り付きますでしょうか? ブランド: シグマ(Sigm 3 2023/07/23 13:50
- 一眼レフカメラ 一眼レフレンズのマウント種を教えてください 4 2022/07/17 10:35
- 一眼レフカメラ ニコンD7200にシグマ下記レンズはとりつくでしょうか? 1 2023/08/14 18:34
- 一眼レフカメラ ニコンD800はフルサイズですがに下記レンズは付きますでしょうか SIGMA 30mm F1.4 D 2 2023/08/14 19:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
H8マイコン C言語でのプロ...
-
!(否定)演算子について
-
繰り返し1行~28行までを順順に...
-
c言語
-
C言語で行列表現
-
Excel・Word リサーチ機能を無...
-
UserForm1.Showでエラーになり...
-
特定のPCだけ動作しないVBAマク...
-
配列数式の解除
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
VBAでfunctionを利用しようとし...
-
教えて下さい
-
メッセージボックスのOKボタ...
-
実行時エラー'-2147467259(8000...
-
エクセルVBAでNAVITIMEを使って...
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
String""から型'Double'への変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
繰り返し1行~28行までを順順に...
-
c言語
-
MATLABにおける行の挿入方法
-
H8マイコン C言語でのプロ...
-
C言語で余りがマイナスになる場合
-
!(否定)演算子について
-
フォートランで行列の計算
-
パイソンのプログラミングにつ...
-
cのプログラミングで虚数を含...
-
ダイナミックプログラミング
-
StandardMLで整数リストの奇数...
-
一般次元の逆行列を求めるプロ...
-
MATLABの参考書
-
Pythonの公式リファレンスガイド
-
MATLABからCへ
-
MATLABのfor文の使い方について
-
OPENCVを使ったエピポーラ幾何...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
配列数式の解除
おすすめ情報