这是一个python代码。我想把这段代码转换成MATLAB,并在一行中进行"for"循环,但我做不到。
calibration={'rms’:result[0],'camera_matrix':result[1].tolist((,'dist_coefs':result[2].tolist对于c,枚举(imageFileNames(]}中的x
不幸的是,当我学习MATLAB时,我不记得有任何类似于MATLAB 的Python中的enumerate((的函数
也许你可以定义你自己的函数enumerate,并在你想要的时候使用它,通过在前面简单地创建一个自定义包(工具箱(来定义它
以下是我如何为MATLAB创建enumerate((函数:
classdef enumerate < handle
properties(Access = private)
IterationList;
end
methods
function self = enumerate(in)
self.IterationList = in;
end
function [varargout] = subsref(self, S)
item = subsref(self.IterationList,S);
num = S.subs{2};
out.item = item;
out.num = num;
varargout = {out};
end
function [m,n] = size(self)
[m,n] = size(self.IterationList);
end
end
end
一旦定义,只需根据自己的喜好使用即可,如:
for t = enumerate(linspace(0,1,10));
disp(['Number: ',num2str(t.num),'Item: ',num2str(t.item)]);
end
如何创建MATLAB自定义工具箱检查此
或者,如果您有1D阵列:
enumerate = @(values) [1:length(values); values]
a = [6 5 4]
for i=enumerate(a)
do something with i
end
此外,还有一些关于MATAB r2021a枚举的文档https://www.mathworks.com/help/matlab/enumeration-classes.html
其他来源:https://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-cell-array.html