MATLAB调用依赖全局变量的外部脚本仅读取最后赋值的问题咨询
问题原因
- 循环逻辑错误:你写的
for ii = length(total_params)只会循环1次,Matlab中for变量等于单个数值时仅执行一次循环,这里length(total_params)值为2,所以循环仅用了第二组参数运行一次。 - 全局变量未更新:两组参数存入
total_params数组后,全局变量Params的值停留在最后赋值的第二组(one=4、two=5、three=6),循环过程中没有将total_params对应下标的结构体赋值给全局Params,调用脚本时只会读到最后一组值。
修正方案
无需修改Add_Param_Vals.m,仅修改ParamStruct.m的循环部分即可,修正后完整代码如下:
global Params total_params = []; Params.one = 1; Params.two = 2; Params.three = 3; total_params = [total_params;Params]; Params.one = 4; Params.two = 5; Params.three = 6; total_params = [total_params;Params]; % 修正后的循环逻辑 for ii = 1:length(total_params) % 将当前循环对应的参数赋值给全局Params变量 Params = total_params(ii); Add_Param_Vals end
修正后输出结果
adding values: ans = 3 adding values: ans = 9
内容的提问来源于stack exchange,提问作者CircAnalyzer
相关产品推荐
相关产品推荐

