Возьмите одно и то же подмножество из множества матриц одинакового размера в MATLAB - PullRequest
0 голосов
/ 02 декабря 2018

Скажем, у меня много матриц a,b,c,d...z

Все они одного измерения,

>> size(a)

ans =

   M   N

Теперь я хочу получить (предполагая mod(M,2)=0 и mod(N,3)=0)

a_new = a(1:2:end,1:3:end);
b_new = b(1:2:end,1:3:end);
.
.
.
z_new = z(1:2:end,1:3:end);

Есть ли способ сделать это легко?

Важное примечание : я хочу сделать это для всех элементов в текущемрабочее пространство размером MxN, поэтому, если есть способ отфильтровать все текущие переменные MxN и взять подмножество, которое будет достаточно.

1 Ответ

0 голосов
/ 02 декабря 2018

Имена динамических переменных очень, очень, очень, очень плохая идея .

Если вам действительно нужно что-то сделать, рассмотрите возможность использования массивов ячеек или другие альтернативы, связанные в учебном руководстве выше.

Если вы все еще хотите это сделать, рассмотрите следующий фрагмент:

list = who;
for k=1:length(list)
    if ismatrix(eval(list{k})) && all(size(eval(list{k})) == [M, N])
        eval([list{k},'_new = ',list{k},'(1:2:end,1:3:end);']);
    end
end
...