Matlab 倍频程幂运算的问题';s网格函数

Matlab 倍频程幂运算的问题';s网格函数,matlab,operators,octave,Matlab,Operators,Octave,我创建了以下函数处理程序: fhapprox1 = @(x, y) sum ([1:x] .^ y) 当使用诸如fhapprox1(3,5)之类的参数调用时,这可以正常工作。但是,当将此函数传递给ezmesh(使用ezmesh(fhapprox1))时,我得到以下错误: error: operator .^: nonconformant arguments (op1 is 1x0, op2 is 60x60) 这里发生了什么?我如何重写它以获得我所期望的三维图形?这是因为您的函数仅设计用于处

我创建了以下函数处理程序:

fhapprox1 = @(x, y) sum ([1:x] .^ y)
当使用诸如
fhapprox1(3,5)
之类的参数调用时,这可以正常工作。但是,当将此函数传递给
ezmesh
(使用
ezmesh(fhapprox1)
)时,我得到以下错误:

error: operator .^: nonconformant arguments (op1 is 1x0, op2 is 60x60)

这里发生了什么?我如何重写它以获得我所期望的三维图形?

这是因为您的函数仅设计用于处理
x
y
的单个值
ezmesh
使用坐标网格,
x
y
在使用
ezmesh
时实际上是二维矩阵。当试图以这种方式调用
ezmesh
时,会出现未定义的行为。另外,
ezmesh
-2*pi之间绘制,我希望我的函数不会被定义为负值。使用
ezmesh(fhapprox1[11000,1,3])
指定尺寸会产生错误
X,Y,Z必须具有相同的尺寸
,但我怀疑这是另一个问题。谢谢你解决这个问题@ForrestKeppler-酷!因此,您将绘图限制为正值。这个错误是因为您的函数仍然需要接受一个值网格,然后输出另一个值网格。如果你愿意,我可以更新我的答案,因为我知道你想要什么。如果您需要更新,请告诉我!我想要一个更新的答案!我没有做太多线性代数,所以我很难理解我应该在这里做什么。@ForrestKeppler-没问题。我更新了我的答案。祝你好运
function [Z] = fhapprox1(X, Y)

Z = zeros(size(X));

for x = 1 : size(X,1)
    for y = 1 : size(X,2)
        Z(x,y) = sum((1:X(x,y)) .^ Y(x,y));
    end
end
ezmesh(@fhapprox1, [1,1000,1,3])