我有两个子类:
它们的对象将通过在它们的末端附加它们来创建路径。这些都有自己的“plotCurve”方法。我想将这些对象存储在一个数组中,顺序如下:
path = [line1,line2,arc1,line3,arc2,arc3,line4,arc4,arc5...];
(我认为“path”应该是超类“path”的对象)当我编写类似这样的代码时;
for i=1:size(path)
path(i).plotCurve;
hold on
end
结果应该显示出来。我应该能看到整条路。(因此,当“直线”的对象出现时,应运行“plotCurve”方法,对于圆弧对象也是如此)。
根据@Cris的建议,我建议进行类似这样的改进(未经测试)
classdef Path < matlab.mixin.Heterogeneous
methods (Abstract, Access = protected)
plotOne(obj)
end
methods (Sealed)
function plotAll(objs)
figure; hold on;
for obj = objs(:).' % loop over all elements
plotOne(obj);
end
end
end
end
这使您可以在路径
数组上调用plotAll
方法-该方法必须是密封的
。它展开数组以调用每个元素上的独立plotOne
方法。
它看起来像是matlab中的子类。混音。异类允许此行为:
classdef Path < matlab.mixin.Heterogeneous
%...
end
classdef Line < Path
%...
end
classdef Arc < Path
%...
end
path = [Line,Line,Arc,Line,Arc,Arc];
figure, hold on
for i=1:numel(path)
path(i).plotCurve;
end
我在这里发现了这个:https://www.mathworks.com/matlabcentral/answers/4354-matlab-handle-class-violates-polymorphism-on-handle-equivalence
虽然我认为使path
成为单元格数组更容易,但是上面的代码在行为上没有区别,除了使用不同的索引:path{i}. plotCurve
。
编辑:最后一个问题,如何通过值而不是引用来存储它?
问题内容: 我有两个不同的数组,一个带有字符串,另一个带有整数。我想将它们连接成一个数组,其中每一列都具有原始数据类型。我当前执行此操作的解决方案(请参见下文)将整个数组转换为dtype = string,这似乎在内存方面效率很低。 何时和何时可能使dtypes多元化? 问题答案: 一种方法可能是使用记录数组。“列”与标准numpy数组的列不同,但是对于大多数用例来说,这就足够了: 请注意,您还可
假设我有一个数据帧,如下所示: 我想在时间分组一个重复的数据,并应用不同的函数到和(例如,求和和计算卷加权平均值)...我知道我能做到 将重复索引分组,然后使用或函数获取第一行或最后一行,但这并不是我真正想要的。 是否有方法对不同列中的值进行分组,然后应用不同的(由我编写的)函数?
我可以根据编号对下面的代码进行排序吗? 就像数据被排序一样,假设升序应该如下所示: 我的代码: 我试过以下方法,但我觉得我做错了什么。但我不知道是什么。 你能告诉我我做错了什么吗?我可以根据名称对这些数据进行排序吗?
我正在学习Java,并为我的期末考试做游戏项目。我试图给我的数组添加不同的值,但当我打印数组时,每次它在地图上显示不同的对象时,我将在这里共享输出。这是主类: 导入人员*; 导入java.security.publickey;导入java.util.Random; 我的一个朋友叫我提取地图,但我不知道该怎么做。这些是对象图像图像
根据Spark数据集介绍: 在我们期待Spark 2.0的时候,我们计划对数据集进行一些令人兴奋的改进,具体来说:。。。自定义编码器–虽然我们目前为各种类型自动生成编码器,但我们希望为自定义对象打开一个API。 并且尝试将自定义类型存储在中会导致以下错误: 无法找到存储在数据集中的类型的编码器。导入sqlC支持原始类型(Int、String等)和产品类型(case类)ontext.implicit