2つの配列間における数値演算アルゴリズムについて

13 次查看(过去 30 天)
RK
RK 2022-10-26
评论: RK 2022-10-28
下記の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
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')
ans = 1
%入力2
F=-1*p.^2;
F=idx.*F;
F(F==0)=NaN;
mean(F,'all','omitnan')
ans = -0.4972
RK
RK 2022-10-26
分かりづらく申し訳ございません。 マスクパターンを平行移動しながら重なりあう領域の平均値を演算したいと思っております。

请先登录,再进行评论。

采纳的回答

Atsushi Ueno
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'));
  1 个评论
RK
RK 2022-10-28
ご回答頂きありがとうございます。 参考になりました。

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!