パワースペクトル解析​の動径方向分布と角度​方向分布について radial direction and angular directions of Power spectrum

7 views (last 30 days)
二次元フーリエ解析をして,パワースペクトルを得て,動径方向分布と角度方向分布のデータを得たいと思っています.
どなたか動径方向と角度方向の分布を得られるコードを教えてください.お願いします.
二次元フーリエ変換に関しては以下のコードを書きました.
I did a two-dimensional Fourier analysis and got the figure of Power spectrum.
Then I want to get the data on radial direction and angular directions.
Can anyone tell me that?
For the two-dimensional Fourier analysis, the following code was used.
rgb =imread('.jpg');
I = rgb2gray(rgb);
figure
imshow(I)
Y = fft2(I);
imagesc(abs(fftshift(Y)))
imagesc(log(abs(fftshift(Y))));

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 31 Aug 2021
Edited: Atsushi Ueno on 31 Aug 2021
function [Zr, R] = radialavg(z,m,xo,yo) % Radially averaqe 2D square matrix z into m bins
MATLABに専用の関数は見つかりませんでしたが、File Exchangeで「動径方向の分布を得るradialavg関数」を見つけました。リンク先からダウンロードして、radialavg.mを現在のフォルダに置けば利用可能です。ご使用の条件に合うか試してみてください。また、デモ用のテストコードradialavg_tester.mが同梱されており、それを実行すればradialavg関数の機能が一目瞭然です。主な仕様を調べ下記に羅列しました。
  • 入力する2次元行列は正方行列である事
  • ドーナツ状マスクの幅、即ちビンの分割数を設定する事が可能(m)
  • ドーナツ状マスクの中心座標をオフセットする事が可能(-1 <= x0,y0 <= 1)
  • ドーナツ状マスクの要素数は動径と共に変化するが、要素数で割った値(平均値)を出力している
  • 円から外れる四隅の部分は動径方向の分布集計に含まれない
  • 入力する2次元行列にNaN値が含まれてもそれを無視した結果を出力可能
% 質問に掲載のコードの続きとして書くコード例
m = 101; % 半径方向のbin分割数+1
[Yr,r] = radialavg(Y,m); % オフセットは省略(=0)
plot(r,Yr,'o');
  7 Comments
Atsushi Ueno
Atsushi Ueno on 2 Sep 2021
Edited: Atsushi Ueno on 2 Sep 2021
radialavg_tester.m だけでは実行不可能で,定義として何かしら必要なのでしょうか?
→MATLABだけで動きます。radialavg_tester.m(デモ用のテストコード) の他に、radialavg.m(radialavg関数の本体)も必要です。下記のページでDownloadボタンを押すとまとめてダウンロードできます。
eri yamabe
eri yamabe on 2 Sep 2021
失礼致しました.パスが通っていませんでした.
また,教えて頂いたコードの例は,既存のものに付け加えて使うことができました.
出力された結果が理解しきれなかったので,radialavgのコードも読みながら読み取ろうと思います.
ありがとうございます.

Sign in to comment.

More Answers (0)

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!