Matlab的函数中如何实现按引用传递参数? -- by benbenknight Matlab中函数的参数都是采用按值传递的方式,没有按引用传递的方式,这让C++程序员很不习惯,很多时候我们可能会需要“在函数内实际 修改参数的值”,尤其在当传入参数是一个类或结构体时。 几经摸索,总算被俺发现了一种可以替代的方法,就是让函数的参数同时作为同名返回值(实际上不一定非得同名,同名是为了代码理解起来 方便),这样便可实现“在函数内部修改参数,外部参数的实际值也会发生变化”的功能。 下面是一个小例子。 文件test.m的源代码如下: function test % 测试函数 disp('按值传递参数,调用函数后,应有p=1'); p=1; parameter_by_value(p); disp(p); % p=1 disp('按引用传递参数,调用函数后,应有p=2'); p=parameter_by_reference(p); disp(p); % p=2 disp('按引用传递参数,调用函数后,应有p1=2, p2=4, p3=6'); p1=1; p2=2; p3=3; [p1,p2,p3]=multi_parameter_by_reference(p1,p2,p3); disp([p1 p2 p3]); %---- 以下为几个子函数 ---------------- function parameter_by_value(p) % 按值传递参数 % 函数内部改动参数p,函数外p的值应该不变 p=2*p; function p=parameter_by_reference(p) % 模拟按引用传递参数 % 函数内部改动参数p,函数外p的值也会变。 p=2*p; function [p1,p2,p3]=multi_parameter_by_reference(p1,p2,p3) % 模拟按引用传递多个参数 p1=2*p1; p2=2*p2; p3=2*p3;
原文地址:http://blog.sina.com.cn/s/blog_50ee72f101009uod.html