如何在MATLAB中循环两个向量?
在python中,可以使用如何在MATLAB中循环两个向量?,matlab,loops,for-loop,octave,Matlab,Loops,For Loop,Octave,在python中,可以使用zip循环多个向量,或者使用enumerate获得循环向量的当前索引,如下所示 one = ['A', 'B', 'C'] two = [1, 2, 3] for i, j in zip(one, two): print i, j for j, i in enumerate(one): print i, two[j] 给予 在MATLAB中,可以执行以下操作 one = {'A' 'B' 'C'}; two = [1 2 3]; for i =
zip
循环多个向量,或者使用enumerate
获得循环向量的当前索引,如下所示
one = ['A', 'B', 'C']
two = [1, 2, 3]
for i, j in zip(one, two):
print i, j
for j, i in enumerate(one):
print i, two[j]
给予
在MATLAB中,可以执行以下操作
one = {'A' 'B' 'C'};
two = [1 2 3];
for i = 1:1:length(one)
printf('%s %i\n', one{i}, two(i));
endfor
j = 1;
for i = one
printf('%s %i\n', i{1}, two(j));
j = j + 1;
endfor
给予
A 1
B 2
C 3
A 1
B 2
C 3
这两个选项中的一个是在MATLAB中实现它的常用方法吗。E通过几个向量“并行”循环,或者有其他更好的方法吗
奖金:
two = [1 2 3];
two = [1, 2, 3];
这两条线在上层MATLAB程序中给出相同的输出。有什么区别?在Matlab中使用
printf
或fprintf
,效果非常好。第一种方法的Matlab代码是
one = {'A' 'B' 'C'};
two = [1 2 3];
for ii = 1:length(one)
fprintf('%s %i\n', one{ii}, two(ii));
end
也可以将字符串放入单元格数组中,而不使用任何for
循环
s = cellfun(@(a,b) [a,' ',b], one', ...
arrayfun(@num2str, two', 'UniformOutput', false),....
'UniformOutput', false)
奖金:
>> A = [1;2;3]
A =
1
2
3
>> A = [1 2 3]
A =
1 2 3
>> A = [1,2,3]
A =
1 2 3
>> A = [1,2,3;4 5 6;7,8 9]
A =
1 2 3
4 5 6
7 8 9
>>
奖金2:
使用
i
和j
是不好的。请参见-您想要在A
和1
之间有两个“空格”、B
和2
等等,还是用其他东西作为它们之间的分隔符?顺便说一句,我不认为MATLAB有printf或者它有吗?@Divakar好的,它是倍频程代码(因为MATLAB在家里太快了),但基本上我在工作中使用MATLAB。无论如何,这不是关于打印功能,而是关于循环的最佳方式。在我看来,第一个选项是很好的,然后简单地使用i
作为索引来访问向量、列表或任何内容的元素。好的,那很好。那么分隔符呢?@divakar不确定你说的对。分隔符(打印时)由printf
中的字符串给出。我想知道的是,如果在[]
之间使用、
或空格作为分隔符,两者是否都给出向量?也许这是一个特定于八度的东西。您使用的是printf(“%s%i\n”
),所以在打印1`和两个元素之间似乎有“一个空间”。如果您使用的是printf(“%s:%i\n”
,那么您使用的是:
作为分隔符。因此,我的问题是-您要打印的分隔符是什么?
>> A = [1;2;3]
A =
1
2
3
>> A = [1 2 3]
A =
1 2 3
>> A = [1,2,3]
A =
1 2 3
>> A = [1,2,3;4 5 6;7,8 9]
A =
1 2 3
4 5 6
7 8 9
>>