gpt4 book ai didi

oop - 类对象统一输出的matlab arrayfun

转载 作者:太空宇宙 更新时间:2023-11-03 20:12:10 25 4
gpt4 key购买 nike

我需要使用 arrayfun 构建类 ID 的对象数组:

% ID.m
classdef ID < handle
properties
id
end
methods
function obj = ID(id)
obj.id = id;
end
end
end

但是报错:

>> ids = 1:5;
>> s = arrayfun(@(id) ID(id), ids)
??? Error using ==> arrayfun
ID output type is not currently implemented.

我可以在循环中交替构建它:

s = [];
for k = 1 : length(ids)
s = cat(1, s, ID(ids(k)));
end

但是 arrayfun 的这种用法有什么问题呢?

编辑(问题的澄清):问题不是如何解决问题(有几种解决方案),而是为什么简单的语法 s = arrayfun(@(id) ID(id), ids) ; 不起作用。谢谢。

最佳答案

也许最简单的方法是使用 cellfun,或通过设置 'UniformOutput' 选项强制 arrayfun 返回元胞数组。然后您可以将此元胞数组转换为对象数组(与上面使用 cat 相同)。

s = arrayfun(@(x) ID(x), ids, 'UniformOutput', false);
s = [s{:}];

关于oop - 类对象统一输出的matlab arrayfun,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10897862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com