2つの配列間における数値演算アルゴリズムについて
13 次查看(过去 30 天)
显示 更早的评论
下記の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 个评论
Atsushi Ueno
2022-10-26
質問したい事が伝わってこないです。
既に円形のマスクパターン 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')
采纳的回答
Atsushi Ueno
2022-10-26
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'));
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!