Matlab 如何绘制(x-​;1)/​;(y​;​;2)^​;1.8?

Matlab 如何绘制(x-​;1)/​;(y​;​;2)^​;1.8?,matlab,octave,Matlab,Octave,我试着画出等式(x-​1)/​(y)+​2)^​1.8使用surf()方法以八度音阶进行。但图表是另一回事 这是我的代码: p = linspace(1,50, 100); t = linspace(1,48,100); ans = zeros(length(p), length(t)); ans = compute_z(p, t, ans); figure; surf(p, t, ans'); 正在尝试计算z=(x-​1)/​(y)+​2)^​1.8使用辅助函数计算z function [a

我试着画出等式
(x-​1)/​(y)+​2)^​1.8使用
surf()
方法以八度音阶进行。但图表是另一回事

这是我的代码:

p = linspace(1,50, 100);
t = linspace(1,48,100);
ans = zeros(length(p), length(t));
ans = compute_z(p, t, ans);
figure;
surf(p, t, ans');
正在尝试计算
z=(x-​1)/​(y)+​2)^​1.8
使用辅助函数
计算z

function [ans] = compute_z(ans, p, t)
        for i = 1:length(p)
            for j = 1:length(t)
               ans(i,j) = (p(i) - 1) / (t(j)+2)^1.8;
            end
        end

我试图生成您的问题是您将
compute_z
输入定义为
ans
p
t
。但是,您可以按该顺序使用
p
t
ans
调用函数。你看到问题了吗

ans
不是函数的输入,只是输出,因此无需将其列为输入。此外,不要调用变量ans,这是MATLAB在未指定输出变量名时使用的默认变量名,因此可能会被覆盖

以下是我的建议:

p = linspace(1,50, 100);
t = linspace(1,48,100);
z = zeros(length(p), length(t));
z = compute_z(p, t);
figure;
surf(p, t, z');
compute_z
定义如下:

function z = compute_z(p, t)
   for i = 1:length(p)
       for j = 1:length(t)
           z(i,j) = (p(i) - 1) / (t(j)+2)^1.8;
       end
   end

您的问题是您将
compute_z
输入按该顺序定义为
ans
p
t
。但是,您可以按该顺序使用
p
t
ans
调用函数。你看到问题了吗

ans
不是函数的输入,只是输出,因此无需将其列为输入。此外,不要调用变量ans,这是MATLAB在未指定输出变量名时使用的默认变量名,因此可能会被覆盖

以下是我的建议:

p = linspace(1,50, 100);
t = linspace(1,48,100);
z = zeros(length(p), length(t));
z = compute_z(p, t);
figure;
surf(p, t, z');
compute_z
定义如下:

function z = compute_z(p, t)
   for i = 1:length(p)
       for j = 1:length(t)
           z(i,j) = (p(i) - 1) / (t(j)+2)^1.8;
       end
   end

无需使用
compute_z-method
,因为您可以使用
meshgrid
和矢量化

p = linspace(1,50, 100);
t = linspace(1,48,100);

[P, T] = meshgrid(p,t); Z = (P-1) ./ (T+2).^1.8;

figure;
surf(P, T, Z);

(在Matlab中测试,但也应在倍频程中工作)

无需使用
计算z-方法
,因为您可以
网格网格
和矢量化

p = linspace(1,50, 100);
t = linspace(1,48,100);

[P, T] = meshgrid(p,t); Z = (P-1) ./ (T+2).^1.8;

figure;
surf(P, T, Z);

(在Matlab中测试,但也应在倍频程中工作)

ans=0(长度(p),长度(t))是多余的。如果有的话,你应该在compute_z中分配ans。@MarcusMüller好的。。但图中没有变化。。如何绘制正确的图形。
ans=0(长度(p),长度(t))是多余的。如果有的话,你应该在compute_z中分配ans。@MarcusMüller好的。。但图中没有变化。。如何绘制正确的图形。看起来你比我先找到答案:)看起来你比我先找到答案:)