cell配列に対し関数を適応したい
35 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
4 × 10 のcell配列があり、それぞれ4999×1 doubleが格納されています。
それら1つ1つの 4999×1 double に対し、
trapz(0.001,c);
の関数を当てはめ、台形積分値を求めたいのですが、上手くいきません。
何か方法があればご教示いただければと思います。
よろしくお願いします。
0 Commenti
Risposta accettata
Hernia Baby
il 27 Mar 2022
cellfunはいかがでしょうか?
4 Commenti
Hernia Baby
il 29 Mar 2022
Modificato: Hernia Baby
il 29 Mar 2022
コメントし忘れていました。すみません…
せっかくなので無名関数を使って返したいと思います。
-------------------------
まずは準備から
load xmin_base.mat
xmin_base
@(変数) [関数or式] で書くことができます。
A = cellfun(@(x) 0.001*trapz(x),xmin_base)
ーーーーーーーーーーーーーーーーーー
■おまけ
無名関数の何がうれしいか説明します
今回の結果はすべてのcell要素がスカラー値だったためうまくいきました。
では各要素の結果がベクトルのような配列ではどうでしょうか?
各cell要素の計算結果がスカラー値ではない場合はcell型で返す必要があります
その場合はoptionである 'UniformOutput' を false にします
B = cellfun(@(x) reshape([0;x],[],2) ,xmin_base,'UniformOutput',false)
もうこの時点で恩恵受けてるんですが、cell型で返す場合スカラーの掛け算はできません
たとえば以下のようなコードを書くと
A2 = 0.001*cellfun(@trapz ,xmin_base,'UniformOutput',false)
'cell' タイプのオペランドに対して、演算子 '*' はサポートされていません。
のようなエラーがでます
無名関数であればそれらも処理が可能です
A2 = cellfun(@(x) 0.001*trapz(x),B,'UniformOutput',false)
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!