how to filter columns
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello friends,
I have this script. But is very slow!
I want to filter all columns beginning with column first. After that, I want, in the place of column first, to put the second column and, in the place of column second to put the column first and filter again. And go on!
My purpose is decrease the time!
Thanks by support!
clear all
clc
q = 1;
p = 2;
r1 = 1;
r2 = 1;
tic
% Example: Filtering a matrix
load ('tum.mat'); % tum have 576 x 1000
for i1 = 1:1000
% Filter rows where the first column is greater than 15
z1 = k2(k2(:,1) == 0, :);
s1 = sum(z1, 1);
r(r1,r2) = max(s1);
temp_row = k2(:,q);
k2(:,q) = k2(:,p);
k2(:,p) = temp_row;
p = p + 1;
r1 = r1 + 1;
end
toc
Elapsed time is 337.582496 seconds.
6 Commenti
Image Analyst
il 13 Set 2025
If k2 is a matrix of random numbers, you will never have the numbers be zero so this won't work
k2(:,1) == 0 % Will never happen!
Matt J
il 14 Set 2025
Elapsed time is 337.582496 seconds.
It does seem impossible for such a small loop to be that slow. Certainly everything excluding the load() statement is very fast, as illustrated in my timing comparison below.
The only explanation I can think of is that you have additional variables in tum.mat that are getting loaded, and which are a lot larger than k2. Or, you are loading from a super slow hard drive.
Risposte (1)
Matt J
il 13 Set 2025
Modificato: Matt J
il 13 Set 2025
m=576;
n=1000;
k2=randi([0,1],m,n).*rand(m,n);
tic;
r=max( (k2==0)'*k2 ,[],2);
toc;
5 Commenti
Stephen23
il 17 Set 2025
@AIRTO: using numbered variables like that is a mistake. Much better to use one container array and indexing:
S = dir('./w*.mat');
for k = 1:numel(S)
F = fullfile(S(k).folder,S(k).name);
C = struct2cell(load(F));
M = C{1}; % this is your matrix.
... do whatever you want with your matrix
S(k).r1 = r1; % save whatever values you want
end
Vedere anche
Categorie
Scopri di più su Multidimensional Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!