您所看到的完全是预期的行为。如果你通过
NetClimatologySubtracted
然后你按原样传递变量。但是,如果你经过
NetClimatologySubtracted(:,:,WinterIndices)
您正在传递一个未命名的变量,等于NetClimatologySubtracted
. 未命名变量没有名称是完全合乎逻辑的。
您可以重新定义您的函数以期望三个参数:
Corr1DTimeSeriesMap(NetClimatologySubtracted, NAO, WinterIndices);
然后把里面的切片Corr1DTimeSeriesMap
。但是,正如 Bob Gilmore 已经指出的那样,这有点臭。
将所有功能尽可能地相互分离是一种更好的编程实践。在您的情况下,这意味着Corr1DTimeSeriesMap
应该能够产生有意义的输出,而与您碰巧输入的变量无关。
到目前为止,更好的方法是通过允许明确指定标签名称来打破对变量名称的依赖:
Corr1DTimeSeriesMap(...
NetClimatologySubtracted(:,:,WinterIndices),...
NAO(WinterIndices), ...
{'Net climatology subtracted', 'NAO_{45}'});
它更健壮,并且还允许使用更漂亮的标签:)
标签(通常)已经是有效的文件名,但为了 100% 确定,您可以将其与genvarname结合使用,从而从指定的标签中生成有效的文件名。
或者,您也可以将文件名作为附加参数:
Corr1DTimeSeriesMap(...
NetClimatologySubtracted(:,:,WinterIndices),...
NAO(WinterIndices), ...
{'Net climatology subtracted', 'NAO'},...
{'NetClimSub.txt', 'NAO.txt'});