2つの配列間における数値演算アルゴリズムについて
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
下記の2つの2次元配列における、畳み込み積分処理において、数値の重なり合う領域の平均値を算出する手法を考えており、有効な処理手法があれば教えていただきたいです。 N=64; x = -1:1/(N/2-1):1; [X,Y] = meshgrid(x,x); [theta,p] = cart2pol(X,Y); idx = p<=1; %入力1 fil=double(idx); fil(fil==0)=NaN; %入力2 F=-1*p.^2; F=idx.*F; F(F==0)=NaN;
2 commentaires
Atsushi Ueno
le 26 Oct 2022
質問したい事が伝わってこないです。
既に円形のマスクパターン fil (=p<=1) と、F (=-p.^2)が作成され、不要箇所はNaNにしていますね。
単にfilやFの平均値を計算すれば良いのでは?
x = -1:1/(64/2-1):1;
[X,Y] = meshgrid(x,x);
[theta,p] = cart2pol(X,Y);
idx = p<=1;
%入力1
fil=double(idx);
fil(fil==0)=NaN;
mean(fil,'all','omitnan')
%入力2
F=-1*p.^2;
F=idx.*F;
F(F==0)=NaN;
mean(F,'all','omitnan')
Réponse acceptée
Atsushi Ueno
le 26 Oct 2022
conv2関数の出力は2次元方向に畳み込んだ結果を全部出力しているので、63*63同士の行列を1次元方向にのみ畳み込みするという事は、下記の結果の中央をスライスした結果になりますね。それを円形のマスクの画素数で割れば平均値のグラフになるでしょう。
x = -1:1/(64/2-1):1;
[X,Y] = meshgrid(x,x);
[theta,p] = cart2pol(X,Y);
idx = p<=1;
%入力1
fil=double(idx);
%fil(fil==0)=NaN;
%入力2
F=-1*p.^2;
F=idx.*F;
%F(F==0)=NaN;
cnv = conv2(F,fil,'full');
surf(cnv)
plot(cnv(floor(size(cnv,1)/2),:)./sum(fil,'all'));
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Annotations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!