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])