dataset内での累積和

조회 수: 8 (최근 30일)
Eisaku Takahashi
Eisaku Takahashi 2019년 6월 16일
답변: Eisaku Takahashi 2019년 6월 19일
dataset内での累積和の求め方はどうすればよいのでしょうか。sum(ファイル名)やcumsum(ファイル名)としてもできません。

답변 (3개)

Yoshio
Yoshio 2019년 6월 16일
一旦ファイルから読み込んで、データセット配列として計算する方法があると思います。
をご参照ください。もし出来ない様でしたら、出来なかったコードを記載されると回答が得られるかも知れません。
  댓글 수: 1
Eisaku Takahashi
Eisaku Takahashi 2019년 6월 16일
datasetは正しく読み込めているのですが、sum、cumsumもできません。
>> ds=dataset('xlsfile', 'test0616.xlsx');
警告: 有効な MATLAB 識別子になるように変数名が変更されました。
> In setvarnames (line 44)
In dataset/readXLSFile (line 50)
In dataset (line 357)
>> ds(1,6)
ans =
x_1_1
3
>> sum(ds)
エラー: sum
データ型が無効です。最初の引数は数値または論理値でなければなりません。
>> cumsum(ds)
エラー: cumsum
データ型が無効です。最初の入力引数は数値または論理値でなければなりません。

댓글을 달려면 로그인하십시오.


Shoumei
Shoumei 2019년 6월 17일
편집: Shoumei 2019년 6월 18일
dsには数値データだけではなく、文字列を含む色んなデータが入っていると思いますので、sumやcumsumなどで演算することはできず、引数としては適切ではありません。
Yoshioさんのリンクの例にあるように、どこかの列だけを引数にしてやると結果が得られると思います。例えば、
ds = dataset('File','testScores.csv','Delimiter',',')
A = cumsum(ds.Test3)
で結果が表示されると思います。(変数ds内のage列を計算しています。)
dsに新しい列として結果を代入したければ
ds.new = cumsum(ds.Test3)
とします。
ワークスペースの変数dsをダブルクリックして、処理前後をご確認ください。
  댓글 수: 2
Eisaku Takahashi
Eisaku Takahashi 2019년 6월 17일
ありがとうございます。
A = cumsum(ds.age)の計算結果が列で表示されるのですが、これはどんな計算を行っているのでしょうか。
A = sum(ds.age)で単にage列の合計は計算できました。
ds.new = cumsum(ds.age)でdsに新しい列として結果を代入することはできました。
Shoumei
Shoumei 2019년 6월 18일
コードの変数名が間違っていたので修正しました。
cumsum(ds.Test3)の計算内容ですが、ds内の変数Test3の累積和を計算しています。
マニュアルで書くとこうなります。
ds.Test3(1)
ds.Test3(1)+ds.Test3(2)
ds.Test3(1)+ds.Test3(2)+ds.Test3(3)
以下続く

댓글을 달려면 로그인하십시오.


Eisaku Takahashi
Eisaku Takahashi 2019년 6월 19일
ご連絡ありがとうございます。
行の累積和を行いたいのですが、ヘルプページなどで探してみます。
ありがとうございます。

카테고리

Help CenterFile Exchange에서 MATLAB 入門에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!