多回路变量Matlab
在C++/C中,我们在一个循环中有多个循环变量,比如多回路变量Matlab,matlab,variables,loops,for-loop,Matlab,Variables,Loops,For Loop,在C++/C中,我们在一个循环中有多个循环变量,比如for(int i=0;int j=0;iMATLAB没有处理多个循环变量的能力,您必须使用嵌套for循环。也就是说,MATLAB最大的优势之一是在数组中高效地应用函数 例如: a = zeros(1,5); for i=1:5 a(i) = sin(i); end b = sin(1:5); 在上面的示例中,a和b是相同的,但计算b不需要显式for循环。有时需要显式for循环(包括嵌套循环)(如通过sim命令运行模拟),但由于您关
for(int i=0;int j=0;iMATLAB没有处理多个循环变量的能力,您必须使用嵌套for循环。也就是说,MATLAB最大的优势之一是在数组中高效地应用函数
例如:
a = zeros(1,5);
for i=1:5
a(i) = sin(i);
end
b = sin(1:5);
在上面的示例中,a和b是相同的,但计算b不需要显式for循环。有时需要显式for循环(包括嵌套循环)(如通过sim命令运行模拟),但由于您关心计算循环迭代的时间,我猜您并没有像大规模模拟那样运行时间密集型任务
因此,我不会使用嵌套for循环,而是考虑将函数设置为使用数组并输入“循环变量”作为数组。查看命令meshgrid和griddata以帮助创建这些数组。MATLAB sort支持多个循环变量,因为它支持一个矩阵作为循环表达式。这是如何工作的?矩阵的各个列在每次迭代开始时被分配给循环变量。
示例代码:
V = [1:1:5; 2:2:10]
for iv = V,
fprintf('iv = [%d %d];\n',iv);
end
输出:
V =
1 2 3 4 5
2 4 6 8 10
iv = [1 2];
iv = [2 4];
iv = [3 6];
iv = [4 8];
iv = [5 10];
我们在这里实现了两个循环变量,iv(1)
和iv(2)
,它们由用作循环表达式的矩阵行指定。请注意,数组可以是任何类型(例如字符串、单元格、结构等)
摘要
for loop_variable = loop_expression, statement, ..., statement end
预先定义循环变量的每次迭代,并将它们存储为矩阵的行。在循环中,循环变量将包含矩阵的一列
旁注
我猜想,这种惯例是由水平连接而不是垂直产生一个数组的结果。
for ii = (1:3).', numel(ii), end
您可能期望三次迭代,每次都指示numel(ii)=1
,但您只得到一次迭代和循环报告:
ans =
3
如果您希望ii
是标量,那么问题很明显
术语
for loop_variable = loop_expression, statement, ..., statement end
正如chappjc所指出的,正如MathWorks在文档中所述,for
循环的每次迭代都会占用迭代器的下一列。因此,要迭代一个列向量,例如,必须对它进行转置(即对于ii=[1;1;2;3;5]”
),否则,ii
一次等于列向量
仅仅为了扩展chappjc的优秀答案,您可以利用单元格的这种行为,除了需要一个数字迭代器之外,您可能还有一些大小不同的字符串,然后您可以将它们处理为变量,这样您就不必做太多的索引。下面是一个粗略的示例:
图(1)
imageList={};
对于ii=[{somePath;someDirListing;1},{anotherPath;anotherDirListing;2}]%,每次迭代取一列
[pathname,images,ipo]=deal(ii{:});
对于iImage=图像
img=imread(完整文件(路径名,iImage));
imagesc(img)
轴图像
如果首次公开募股=1
标题(['这是一张左边的图片,标题为'iImage])
其他的
标题(['这是一幅右侧图像,标题为'iImage])
结束
暂停(1)
结束
结束
<代码> > <代码> >代码> j>代码>遵循相同的起始值和结束值,为什么不使用循环来<代码> i <代码> >代码> > i> 0:4/COD>,然后声明<代码> j= i>代码>?我认为继续循环的条件必须是一个而不是多个- <代码>,而且命令需要用C++中的逗号分隔。您有三个部分,用两个分号分隔:for(INITIALIZATION;CONDITION;INCREMENT)command;
。您的示例可以是这样的:for(int i=0,j=0;i@AhsanAli将MATLAB中的循环表达式看作临时(常量)变量通常是有益的,以避免类似于中的问题(链接到我的答案,因为它与要点相关)。哇..+1。我刚刚注意到了这一点。这非常类似于Python中的zip
,当你有两个数字列表时。真的很酷!