如何在MATLAB的for循环中为类定义多个对象?
解决方法
你的代码存在两个核心问题:
- 只是修改了cell数组
list的元素,并没有创建名为A、B、C、D的独立工作区变量 class是Matlab内置函数,直接赋值会触发错误,你需要替换为实际要实例化的类名
下面提供两种可行的实现方式:
方式1:使用eval(直观简洁)
var_names = {'A', 'B', 'C', 'D'}; target_class = 'YourClass'; % 替换成你要实例化的类名 for idx = 1:length(var_names) eval([var_names{idx} ' = ' target_class '();']); end
这段代码通过拼接字符串并执行的方式,直接在工作区创建对应名称的变量,并完成类的实例化。
方式2:使用assignin(更安全规范)
var_names = {'A', 'B', 'C', 'D'}; target_class = 'YourClass'; % 替换成你要实例化的类名 for idx = 1:length(var_names) new_obj = feval(target_class); % 实例化对象 assignin('base', var_names{idx}, new_obj); % 将对象绑定到工作区变量 end
用feval实例化类对象,再通过assignin将对象注入到工作区指定变量中,避免了直接执行字符串的潜在风险。
内容的提问来源于stack exchange,提问作者minecraftgp
相关产品推荐
相关产品推荐

