Matlab: переключение определенных строк в матрице столбцов

#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 😉