Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中循环两个向量?_Matlab_Loops_For Loop_Octave - Fatal编程技术网

如何在MATLAB中循环两个向量?

如何在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 =

在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 = 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
>>