未定义的函数或变量向量

时间:2017-04-14 13:20:43

标签: matlab variables for-loop if-statement vector

我使用matlab并加载了一个包含变量date,pH和pressure_dbar(所有向量)的文件。我试图编写一个函数来接收这些变量,以及最大和最小的pressure_dbar变量,并返回两个新的向量:newDate和newpH。如果日期和pH值> =最小值并且

minimum = min(pressure_dbar);
maximum = max(pressure_dbar);

function [newDate, newpH] = oceanpHdepth(date, pH, pressure_dbar, minimum, maximum)

for i = 1:length(date)
    for j = 1:length(pH)
        if (ge(pressure_dbar, minimum) && lt(pressure_dbar, maximum))
                newDate = date(i);
                newpH = pH(j);     
        end
    end
end

end

1 个答案:

答案 0 :(得分:2)

错误可能是由于从未到达循环内部,因此newDatenewpH实际上从未在函数内部定义。之所以发生这种情况,是因为您实际上并未使用ij索引来访问pressure_dbar单个元素而是您正在比较整个每次绑定某些 false值的数组,然后if语句将始终评估为false。

真的,应该是

if (ge(pressure_dbar(i), minimum) && lt(pressure_dbar(i), maximum))

此外,由于每次都会覆盖newpHnewDate的值,因此您根本不会将内部循环的结果存储到数组中。其次,您最好只使用逻辑索引来生成newDatenewPH

function [newDate, newpH] = oceanpHdepth(date, pH, pressure_dbar, minimum, maximum)
    mask = pressure_dbar >= minimum & pressure_dbar < maximum;
    newDate = date(mask);
    newpH = pH(mask);
end