qingta123 发表于 2009-4-9 15:26

关于结构体作为函数变量

请问怎么把结构作为一个函数的变量
例如:
a.x=1;
a.f=[];
现要将a.x的值通过某个函数后的值赋给a.f
请问怎么实现
a.f=function(a.x)
这种方式我已经试过了,对于单个的结构体a是可以的
但是当a为一个1*n的结构体数组时,就不行了
求高手指点!!!

ChaChing 发表于 2009-4-9 16:10

可以的话, 请具体些!
出错代码和出错提示?

qingta123 发表于 2009-4-9 16:26

原帖由 ChaChing 于 2009-4-9 16:10 发表 http://www.chinavib.com/forum/images/common/back.gif
可以的话, 请具体些!
出错代码和出错提示?
没有出现任何提示或警告。
只是在这个函数运行结束后,函数值并没有赋给a.f,其值仍然为空,

qingta123 发表于 2009-4-9 16:46

不好意思,刚才我没有说清楚,那个是另一种情况,我现在详细的说一下
比如函数是:
function v=Squ(p)
c=length(p);
for i=1:c
    v(i)=p(i)*p(i);
end
现在
定义a为
>> a(1).x=1; a(2).x=2; a(2).f=[]; a(2).f=[];
这时调用函数
a.f=Squ(a.x);
的话就会出现
??? Error using ==> Squ
Too many input arguments.
之后,我把a.x写成作为一个数组
这样的话
函数就是
=Squ();
这样的话就出现了下面的错误
??? Error using ==> Squ
Too many output arguments.

上述就是具体的情况了

[ 本帖最后由 ChaChing 于 2009-4-9 22:11 编辑 ]

ChaChing 发表于 2009-4-9 23:03

没如此用过! 但从错误讯息看好像varargin/varargout不支援结构class!
好奇, 为何一定要用struct class?
待高人确认!

ChaChing 发表于 2009-4-30 13:56

回复 地板 qingta123 的帖子

早上看了下Structures的帮助文献, 以前没细看!
varargin/varargout是支援Structures的, 但a.x并非Structures
试试下面方式, 方式可能很多!
function v=Squ(p)
c=length(p); for i=1:c, v(i)=p(i)*p(i); end
>> a(1).x=1; a(2).x=2; a(2).f=[]; a(2).f=[]; zz=Squ();
>> aa=struct('g',num2cell(zz)); =deal(aa.g);
页: [1]
查看完整版本: 关于结构体作为函数变量