2つの配列間における数値演算アルゴリズムについて
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
下記の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 Commenti
Atsushi Ueno
il 26 Ott 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')
Risposta accettata
Atsushi Ueno
il 26 Ott 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'));
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Annotations in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!