#matlab
#matlab
Вопрос:
Я хотел бы перевернуть определенные строки для матрицы столбцов. Например;
пусть матрица A будет:
1
2
**3**
**4**
**5**
**6**
7
8
9
10
Я бы просто хотел перевернуть строки с 3 по 6 таким образом, чтобы матрица A стала;
1
2
**6**
**5**
**4**
**3**
7
8
9
10
Я пробовал команды flip и flipdim, но, похоже, это переворачивает всю матрицу.
Ответ №1:
если a=[1:10]'
как в вашем примере, почему бы просто :
a(3:6)=flip(a(3:6))
>> a =
1
2
6
5
4
3
7
8
9
10
Комментарии:
1. Спасибо за ваш ответ. Это работает. Я применил цикл for для того же самого, но это намного проще. Спасибо.
Ответ №2:
Здесь нет эффективного способа сделать это, т. Е. нет встроенной функции, которая просто сообщает интерпретатору, какие значения перевернуты. Поэтому вам нужно будет скопировать их
% create matrix size: (10x2)
Mat = repmat((1:11).',1,2);
% define section (index-wise)
sctIDX = [3 6
10 11];
% now loop over the sections
for i = 1:size(sctIDX)
% create logical vector for indexing rows
lg = false(size(Mat,1),1);
lg(sctIDX(i,1):sctIDX(i,2)) = true;
% flip matrix section
Mat(lg,:) = flip(Mat(lg,:),1);
% the second argument is the dimension: 1=rows, 2=columns
end
и результат таков
1 1
2 2
6 6 %***
5 5 %***
4 4 %***
3 3 %***
7 7
8 8
9 9
11 11 %***
10 10 %***
Комментарии:
1. Спасибо, что нашли время ответить. Это полезно.
2. Я понимаю, что я новичок и, возможно, совершаю ошибки. Я не возражаю против отрицательных ответов на вопрос, но если человек, который отрицает, потратит время на то, чтобы объяснить, почему он был отклонен, то, возможно, таким людям, как я и другим, кто новичок в размещении вопросов здесь, может быть, есть чему поучиться у отрицательных ответов. Спасибо за вашу помощь.
3. Я предполагаю, что этот комментарий должен был быть помещен под вашим оригинальным сообщением, @Smalbro93 😉