MATLAB Answers

行列の積の計算が上手​くいきません(for​文、ヒルベルト行列)

5 views (last 30 days)
wataru suzuki
wataru suzuki on 25 Mar 2020
Commented: wataru suzuki on 27 Mar 2020
画像再構成のプログラムのため、MATLAB外のメモ帳などから8×8のヒルベルト行列を読み込み、
MATLAB上で計算した位相回転因子(ここでは関数、PHX、PHY)である8×8のヒルベルト行列との積を取りたいです。
しかしメモ帳から読み込まれる値は正しく8×8なのですが、MATLAB上のは9×9の行列になっています。
その為、計算できないエラーが発生しています。1~8列目までの範囲の値は正しいので読み取り範囲の改善などのプログラムの問題だと考えています。
これはforの使い方が原因なのでしょうか?なぜ9×9の範囲で出力されているかといった理由や
9×9の行列を8×8に読み取り範囲に直し、計算する方法などを教えていただけると嬉しいです…
%外部txtデータ(メモ帳など)からデータの読み取り
filename = 'sinogramRPfft.txt';
[A,delimiterOut]=importdata(filename)
%ピクセル入力用文字Nの設定
N=input(prompt)
s = N;
H = zeros(s);
%読み込んだデータをMATLABの行列に
for c = 1:s
for r = 1:s
H(r,c) = A(r,c);
end
end
%読み込んだデータの実部と虚部を分ける
%AR=読み取った行列の実部、AI=読み取った行列の虚部
%実部
for c = 1:s
for r = 1:s
AR(r,c) = real(A(r,c));
end
end
%虚部
for c = 1:s
for r = 1:s
AI(r,c) = imag(A(r,c));
end
end
%位相回転因子実部(COS)について
for c = 1:s
for r = 1:s
PHX(r,c)=cos(2.*pi.*r.*c/N);
end
end
%位相回転因子虚部(SIN)について
for c = 1:s
for r = 1:s
PHY(r,c)=sin(2.*pi.*r.*c/N);
%PHY(9,9)=[]
end
end
disp(PHX)
実行結果
0.7071 0.0000 -0.7071 -1.0000 -0.7071 -0.0000 0.7071 1.0000 1.0000
0.0000 -1.0000 -0.0000 1.0000 0.0000 -1.0000 -0.0000 1.0000 1.0000
-0.7071 -0.0000 0.7071 -1.0000 0.7071 0.0000 -0.7071 1.0000 1.0000
-1.0000 1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000 1.0000 1.0000
-0.7071 0.0000 0.7071 -1.0000 0.7071 -0.0000 -0.7071 1.0000 1.0000
-0.0000 -1.0000 0.0000 1.0000 -0.0000 -1.0000 -0.0000 1.0000 1.0000
0.7071 -0.0000 -0.7071 -1.0000 -0.7071 -0.0000 0.7071 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
  4 Comments
wataru suzuki
wataru suzuki on 27 Mar 2020
こんにちは、ご返信ありがとうございます。
おかげで様で助かりました

Sign in to comment.

Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!