Matlab 我的fft2功能无法使用

Matlab 我的fft2功能无法使用,matlab,Matlab,当我将这两条语句从内置函数转换为自己的函数时,遇到了一个问题: gaus=gauss/sum(gauss(:)); BeforeAbs=fft2(gaus,size(im,1),size(im,2)); 它给了我[试图访问X(2);索引超出范围,因为numel(X)=1] 有人能告诉我为什么会出现这个错误吗?在您的代码中,语句 X=size(im,1); 返回变量im沿其第一个维度的大小。这将返回一个标量值。但是,您有一个for循环: for x=1:2 ... summ=summ

当我将这两条语句从内置函数转换为自己的函数时,遇到了一个问题:

gaus=gauss/sum(gauss(:));
 BeforeAbs=fft2(gaus,size(im,1),size(im,2));
它给了我[试图访问X(2);索引超出范围,因为numel(X)=1]


有人能告诉我为什么会出现这个错误吗?

在您的代码中,语句

X=size(im,1);
返回变量
im
沿其第一个维度的大小。这将返回一个标量值。但是,您有一个
for
循环:

for x=1:2
  ...
  summ=summ+(X(x)*exp(w3)); 
end
迭代值
x=1
x=2
。当您尝试在
X=2
时计算
X(X)
时,会出现错误,因为
X
只有一个元素

基本上,您正在做与此等效的事情:

X = 5
X(2)
另外,您的for循环用于
u

for u=0:(X-1)
u=0开始,但稍后尝试设置

PQ3(u)=summ;

但是,MATLAB中的数组索引是基于1的,因此
PQ3(0)
将导致错误。您应该从1开始编制索引:
PQ3(1)=summ

请将此代码减少到导致问题的最小代码。好的,请参阅更新版本,谢谢。不清楚第一个代码段与第二个代码段之间的关系……它是相同的,但根据您的要求进行缩减。不,我是指上面前两行之间的关系(开始
guas=guass…
)然后是上面的其余代码(开始
%----
)。好的,我能做些什么来解决它呢?我试图使循环statred以1结束,并给我相同的问题请看我上面的附加答案。同样,以1开始的u也给我尝试访问X(2);索引超出范围,因为numel(X)=1.您必须解决两个问题,而不是一个或另一个问题。我的答案的顶部已经解决了“试图访问X(2);索引超出范围,因为numel(X)=1”的解决方案。我解决了这两个问题,并更新了我所做的代码。但现在其他问题显示:未定义的函数或变量“PQ2”你介意这个问题与索引的改变有关吗?
PQ3(u)=summ;