cell配列に対し関数を適応したい
13 次查看(过去 30 天)
显示 更早的评论
4 × 10 のcell配列があり、それぞれ4999×1 doubleが格納されています。
それら1つ1つの 4999×1 double に対し、
trapz(0.001,c);
の関数を当てはめ、台形積分値を求めたいのですが、上手くいきません。
何か方法があればご教示いただければと思います。
よろしくお願いします。
0 个评论
采纳的回答
Hernia Baby
2022-3-27
cellfunはいかがでしょうか?
4 个评论
Hernia Baby
2022-3-29
编辑:Hernia Baby
2022-3-29
コメントし忘れていました。すみません…
せっかくなので無名関数を使って返したいと思います。
-------------------------
まずは準備から
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)
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!