dataset内での累積和

15 次查看(过去 30 天)
Eisaku Takahashi
Eisaku Takahashi 2019-6-16
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!