matlab类赋值,Matlab 类数组赋值的问题?

不好意思 , 上次自己发的那个帖子找不到了。重新发一个。

问题是如何对 由classdef 产生的对象 构建的数组赋值的问题。

最近用matlab做了一些面向对象的开发工作,感觉很爽,但是遇到

一个对于类数组的赋值问题,一直无解,不知道是不是matlab不支持。

我用的是 matlab r2008a (7.06.0.324)

问题如下:element 是一个类,有一些基本属性;

container是另外一个类,container其中的一个属性 “con_ele” ,是element的数组;

有没有办法不用for 可以一次性对container中所有的"con_ele" 的某一个属性,例如 con_ele.ns

进行赋?

目前可以一次性都取出来,无论是做成数组还是cell,但是不能一次性赋值,只能用

for循环,总是会报“??? Insufficient number of outputs from function on right hand side of equal sign

to satisfy overloaded assignment.”

测试用例如下:

element.m     element     类定义文件

container.m   container  类定义文件

testbench.m       测试平台文件

附加的小问题:这里如果用for会很影响效率吗?

谢谢各位大侠!

试验代码:

--------element.m --------------

classdef element

properties

ns,

nt,

nv,

nu,

end

methods

function obj=element()

obj.ns =0;

obj.nt =1;

obj.nv =2;

obj.nu =3;

end

end

end

-----------end element.m-------------

------------container.m---------------

classdef container

properties

cona,

conb,

con_ele

end

methods

function obj = container(s)

obj.cona = 3.14;

obj.conb = 6.28;

obj.con_ele = repmat(element,s,1);

end

end

end

------------end container.m----------

----------testbench.m------------

%test_classarray

clear;clc;

size = 10;

test_containter = container(size);

%different ways to get container.con_ele.nt value

ele_nt_mat = [test_containter.con_ele.nt];

ele_nt_cell = {test_containter.con_ele.nt};

%Question:

%How to change all the value of test_containter.con_ele.nt

%Change one value, THIS WORKS.

test_containter.con_ele(1).nt = 9;

%Methods to change more than one value I have tried.

%  They *WON'T* work

test_containter.con_ele(1:3).nt = [9,9,9];

test_containter.con_ele(1:3).nt = [9,9,9]';

test_containter.con_ele(1:3).nt = {9,9,9};

test_containter.con_ele(1:3).nt = {9,9,9}';

%QUESTION

%  Is there some ways to solve this problem without for loop?

---------------end testbench.m---------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值