不好意思 , 上次自己发的那个帖子找不到了。重新发一个。
问题是如何对 由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---------------