在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]
给出
>>>
A 1
B 2
C 3
A 1
B 2
C 3
在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中如何做到这一点的常用方法,i。即循环遍历几个向量"并行"还是有另一种,也许是更好的方式?
加成:
two = [1 2 3];
two = [1, 2, 3];
这两行都在上层MATLAB程序中提供相同的输出。差异是什么?
答案 0 :(得分:1)
在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
是不好的。见 - Using i and j as variables in Matlab