在没有matlab函数的情况下,在matlab中使用dft进行图像处理

在没有matlab函数的情况下,在matlab中使用dft进行图像处理,matlab,dft,Matlab,Dft,我在matlab中有两个函数 %%%%%%% test_dft clc;clear all;close all; %% img=(imread('images/test_image.jpg')); if isrgb(img) a=double(rgb2gray(img)); else a=double(img); end temp = zeros(size(a)); f = double(zeros(size(a))); [m n]=size(a) for i = 1:

我在matlab中有两个函数

%%%%%%% test_dft 
clc;clear all;close all;
%%


  img=(imread('images/test_image.jpg'));
if isrgb(img)
    a=double(rgb2gray(img));
else
    a=double(img);
end
temp = zeros(size(a));
f = double(zeros(size(a)));
[m n]=size(a)
for i = 1:m
    temp(:,i)=dft(a(:,i));
 end
for j = 1:n
   f(j,:) = dft(a(j,:));
end


%%%%%%%% dft.m
function X=dft(x1) 
N=length(x1);
X=zeros(size(x1)); 
i=sqrt(-1); 
for k=0:N-1 
for n=0:N-1 
X(k+1)=(X(k+1)+x1(n+1)*exp(-2*pi*i*k*n/N)) ;
end 
end
end
我想计算图像的dft,然后将其用于频域掩蔽(不带matlab函数)。
这段代码需要很长时间,但不起作用。我不知道为什么。

imread
返回整数值。先把它们转换成双倍

a = double(a);

谢谢,但现在显示此错误:???试图访问temp(32,:);索引超出范围,因为大小(临时)=[31,34]。误差==>在18华氏度(j,:)=干膜厚度(温度(j,:));尝试运行
x=dft(temp(j,:)x的大小是多少?
a
的大小是多少?我找到了我的answare,我在def.m中更改了m和n(for的索引)--谢谢你的帮助@yuk