• 締切済み

matlab初心者の質問

matlabに関する質問です。(私は初心者です。) 例えば A=[1 2 3 … n] のような行列があった場合、 B=[1 1+2 1+2+3 … sum(A(1:n))] のような行列を表示するにはどのようなコードを書けばいいのでしょうか。

みんなの回答

  • Kules
  • ベストアンサー率47% (292/619)
回答No.2

cumsumを使うとかですかね。 http://www.mathworks.co.jp/jp/help/matlab/ref/cumsum.html 参考になれば幸いです。

hiderigami
質問者

お礼

私、cumsumは今回初めて知ることとなり、非常に参考になりました。 ご回答、本当にありがとうございます。

  • masudaya
  • ベストアンサー率47% (250/524)
回答No.1

私も初心者です. A=[a1,a2,・・・,an] という行ベクトルの時, B=[a1,a1+a2,a1+a2+a3,・・・,Σ(k=1 to n)ak] と言うという行ベクトルを求めるという意味でしょうか. そうであれば,つたないコードになりますが, n=size(A,2); B=zeros(1,n); for k=1:n B(k)=sum(A(1:k)); end で求められると思います. きっともっとうまい方法あると思いますが, これでも求められます.

hiderigami
質問者

お礼

本当にありがとうございます。 おかげさまで作業がスムースに進みそうです。大変助かりました。 私もこれから精進していこうと思います。

関連するQ&A

  • Matlabのspdiags関数

    Matlabのspdiags関数に関してわからないところがあります。以下はMatlabのヘルプWebページから持ってきた例です。http://dl.cybernet.co.jp/matlab/support/manual/r2006/toolbox/matlab/math/?/matlab/support/manual/r2006/toolbox/matlab/math/sparse4.shtml B = [ 41 11 0 52 22 0 63 33 13 74 44 24 ]; d = [-3 0 2];、m=7, n=4のとき A = spdiags(B,d,7,4) A = (1,1) 11 (4,1) 41 (2,2) 22 (5,2) 52 (1,3) 13 (3,3) 33 (6,3) 63 (2,4) 24 (4,4) 44 (7,4) 74 これに対応するフル行列Aは、つぎのようになります。 full(A) ans = 11 0 13 0 0 22 0 24 0 0 33 0 41 0 0 44 0 52 0 0 0 0 63 0 0 0 0 74 mやnというのはfull(A)がm行n列の行列であるというイメージの対応がわかるのですが、d = [-3 0 2]とfull(A)の行列の関係がわかりません。-3,0,2というのはfull(A)のどこを見れば良いのでしょうか。

  • matlabについての質問です。

    matlabについての質問です。matlab初心者です。 3つ以上のデータ列について相関係数を求めるプログラムを教えてください。 イメージとしては データ列a b cについて a b c a 1 b 0.2 1 c 0.8 0.4 1 このような結果が出るようなプログラムを書きたいです。 わかるかた、回答宜しくお願いします。

  • MATLABのプログラミングについてご質問です

    MATLAB初心者です。 現在、以下の環境を使っています。 ------------------------------- OS:Windows XP MATLABのバージョン:R2007a ------------------------------- 以下の内容をプログラムでどう組み込めばよいのか分らないため、質問させて頂きました。 詳しい方、ご教授のほどお願いします。 (1)Windowsのペイントで、ドラッグ&ドロップすると    +----------+    |         |    +----------+  このように、点線で枠ができると思います。それをMATLABで表現する方法  (始点座標と終点座標はマウスで操作するため、座標は可変になります) (2)MATLAB-GUIに画像データ(sample.tif)を表示する方法 (3)MATLAB-GUIを表示した時に、表示位置を常にパソコンのモニター中央にする方法 (4)MATLAB-GUIで画面A, Bとある場合、画面Aの[次へ]ボタンを押すと画面Aを消して画面Bを表示する方法 長くて申し訳ございませんが、ご回答よろしくお願いします。

  • MATLABについて

    Matlabで行列の絶対値の平均値を求めるにはどうすればよいですか? 以下の行列noiseの各要素の絶対値の平均値が知りたいのですが。 t = linspace(0,1,100); randn('state',sum(100*clock)+0); noise=randn(size(t));

  • MATLABとC++

    こんにちわ。資料を参考にしつつMATLABからC言語へ変換する作業をしているのですが、どちらに関しても初心者レベルで遅々としてはかどりません…。 分からないことの一つとして、MATLABは行列計算がしやすいがC言語はそうではないということからなのですが、MATLABで A = zeros(10,20,30) というのは次元10×20×30をもつゼロ行列 ということは分かったのですが、これは 数学で習う行列、2×2 や3×3など二次元な数字の並びを、三次元にまで拡張した表し方ということでしょうか?? また、上の式をC言語で書き表すとすると どのように書き表せるのでしょうか?どなたか分かるかた 教えていただければと思います。

  • matlabについて

    こんにちは。matlabについての質問です。 matlabについてまったくの初心者なのですが、大学のパソコンに入っているmatlabでsymsという変数の指定をしても、エラー表示がでてしまいます。これはどうやらmatlabに追加のtoolが入っていないと使えないということが調べていたらわかりました。この場合たとえば、f=x^2-x-1でf=0をxについて説くという場合どのようにmatlabに入力すればいいのですか?いろいろ調べたのですがよくわからなくて・・・。また、僕みたいな超初心者でもわかりやすいmatlab入門書やサイトで、お薦めの本などありましたら、教えていただきたいです。お願いします。

  • MATLAB 並び替え

    MATLABについての質問です。 いま、以下のような行例A(2*2)があります 1 0.24 1 0.44 1 0.67 2 4.69 2 9.40 3 6.4 3 6.66 3 5.67 3 3.98 3 9.92 4 1.43 ...続く 即ち、行列Aは一列目に整数のインデックス1~100、2列目にあるデータが格納されています。これを、新しい行列Bに並び替えたいのです。行列Bは行方向にデータ、列方向にAの一列目のインデックス、という風にしたいです。具体的には、 0.24  4.69  6.4  1.43 0.44   9.40   6.66 0.67      5.67          3.98          9.92 です。どのように書けばもっともシンプルでしょうか? 質問の仕方が悪かったらごめんなさい。どうぞよろしくお願いいたします。

  • MATLABからCへ

    if(n>1), nrm = sqrt(sum([A.*conj(A)],2)); else nrm = abs(A); end return MATLABで次のように与えられたときどのようにしてC言語で書けばよいでしょうか??

  • MATLABの射影変換についての質問です。

    MATLABの射影変換についての質問です。 1枚の画像に3×3の行列をかけて画像変換するつもりです。しかし、その画像自体は3×3ではないので、直接かけることができません。 そこで、3×3以外の画像行列に、3×3行列をかけて、変換された画像を表示する方法をお聞きしたいです。 どうぞ宜しくお願いします。

  • MATLABについての質問です(初心者です)。

    MATLABについての質問です(初心者です)。 関数のresampleについてどなたかご教授下さい。 200Hzから20Hzにリサンプリングをしたいのですが、なかなかうまくいきません。 例) fname='WAVE004'; fsnew=20*2.56; p=200; [a,t,ndata] = teac2(fname); anew = resample(t,fsnew,p); で処理するとエラーが出てしまします。 a→8×100000、t→8×100000が格納されています。 どのようにすればエラーが出なく、若しくはうまく処理出来るのでしょうか?