Току-що писах цикъл „някакво предсказване“ в Matlab и се сблъсках с това странно поведение:
Имам матрицата A:
A = [
3
9
5
0];
И искам да използвам a foreach
контур (както е обяснено тук) на A.
Ако напиша това:
for i = A
disp("for")
i
end
Резултатът ще бъде:
for
i =
3
9
5
0
Но когато използвам транспонирането, резултатът ще се промени:
for i = A"
disp("for")
i
end
Резултат:
for
i =
3
for
i =
9
for
i =
5
for
i =
0
Кой е резултатът, който искам.
Някой може ли да обясни какво става тук? Каква е разликата между тези два случая?
Отговори:
6 за отговор № 1когато пишете
A = [
3
9
5
0];
създавате вектор на колона. Тъй като Matlab повтаря над колони, получавате един отговор (първата колона). Транспонирайки го, получавате вектор от редове с 4 колони и следователно 4 отговора във всяка колона.
5 за отговор № 2
В Matlab, the for
цикълът итератира над колоните. http://www.mathworks.es/es/help/matlab/ref/for.html