У меня есть массив Matlab 601 X 1600 (время x испытания). Я хочу создать отдельный массив, отбросив испытания, которые превышают значение критерия 100. т. Е. Результирующий массив должен иметь размер 601 x n. Кто-нибудь может мне с этим помочь?
Спасибо, Питер
Лучшая ссылка здесь: mathworks.com/help/matlab/ref/find.html
Вы уверены, что у вас все еще может быть n столбцов для всех строк после отбрасывания значений> 100?
n будет равно или меньше 1600





У вас есть два варианта. Один из них - использовать find, как указано в Bzier.
Другой, который я предлагаю здесь, основан на логическая операция, который быстрее.
m_transposed = m'; % m is your 601*1600 matrix
mask = m_transposed<=100; % a logical matrix
m = m_transposed(mask); % this creates a vector, the values of which are <= 100
m = reshape(m, [], 601)'; % reshape the vector into a 601*n matrix.
Вы также можете объединить четыре строки в две строки:
m_transposed = m';
m = reshape(m_transposed(m_transposed<=100), [], 601)';
Обратите внимание, что если количество отбрасываемых элементов отличается от строки к строке, приведенный выше код не будет работать, потому что в некоторых строках останется меньше элементов, и вы не сможете сформировать матрицу 601 * n. В этом случае у вас есть возможность заполнить пустые места в матрице нулями или nan:
mask = m>100;
m(mask) = nan; % replace values > 100 with nans.
m(:,sum(mask)==size(m,1)) = []; % delete columns whose values are all nans.
Не уверен, почему мой ответ получил отрицательный голос. Может я не упомянул подход find? Просто замените
mask = m_transposed<=100 с mask = find(m_transposed<=100) или
mask = m>100 с mask = find(m>100)
Не беспокойтесь об одном голосе против. Некоторые люди отрицательно оценивают ответы на вопросы, которые они считают «плохими». Тем не менее, я думаю, что OP хочет отбросить целые столбцы из матрицы (столбцы - это испытания). Однако можно только догадываться, что означает, что столбец превышает 100. OP не вернулся с момента публикации вопроса 2 дня назад.
Вы изучили документацию по find? mathworks.com/help/matlab/matlab_prog/…