我使用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
答案 0 :(得分:2)
错误可能是由于从未到达循环内部,因此newDate
和newpH
实际上从未在函数内部定义。之所以发生这种情况,是因为您实际上并未使用i
和j
索引来访问pressure_dbar
的单个元素而是您正在比较整个每次绑定某些 false
值的数组,然后if
语句将始终评估为false。
真的,应该是
if (ge(pressure_dbar(i), minimum) && lt(pressure_dbar(i), maximum))
此外,由于每次都会覆盖newpH
和newDate
的值,因此您根本不会将内部循环的结果存储到数组中。其次,您最好只使用逻辑索引来生成newDate
和newPH
function [newDate, newpH] = oceanpHdepth(date, pH, pressure_dbar, minimum, maximum)
mask = pressure_dbar >= minimum & pressure_dbar < maximum;
newDate = date(mask);
newpH = pH(mask);
end