Matlab未定义变量

use*_*089 1 matlab

说我有以下代码:

[w1, d1]=fit1; 
    for i = 1:10, 
      p = w1*d1+i;
      C(i,:) = p;
    end

[w2, d2]=fit2; 
    for i = 1:10, 
      q = w2*d2+i;
      D(i,:) = q;
    end
Run Code Online (Sandbox Code Playgroud)

功能fit1:

function[w1, d1] = fit1
w1 = rand(1);
d1 = rand(1);
Run Code Online (Sandbox Code Playgroud)

和功能fit2:

function[w2, d2] = fit2
w2 = w1+0.2;
d2 = d1-0.1;
Run Code Online (Sandbox Code Playgroud)

我收到错误: Undefined function or variable 'w1'.

但是w1之前定义的参数是fit2被调用的,为什么这不起作用呢?

谢谢!

Mik*_*kin 5

这是因为你的函数fit2不知道变量w1d1.每个函数都有自己的变量空间,它由输入参数组成,当然还包括在此函数中定义的变量.函数fit2没有任何输入,因此它不知道任何变量.为了使代码正常工作,您应该修改fit2为有2个输入(您在此函数中使用):

function[w2, d2] = fit2(w1,d1)
w2 = w1+0.2;
d2 = d1-0.1;
Run Code Online (Sandbox Code Playgroud)

并使用它的输入参数调用它:

[w2, d2]=fit2(w1,d1);
Run Code Online (Sandbox Code Playgroud)