How can I avoid the "out of memory' for the following code?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Ranu Ghafour
il 11 Set 2022
Commentato: Ranu Ghafour
il 13 Set 2022
I have one set of data that has multiple matrices of 40000x10800. I want to extract those matrices column by column, clear it from zeros values, and the save them in another matrix. but when I ran the following code, it gives the "out of memory" message. Please help me.
r=randi([0 10],40000,10800);
for i=1:1:10800
r_0=r(:,i);
r_0=r_0(r_0~=0);
r_1(:,i)=r_0;
end
I have adjusted the code like above because my dataset is more the 5 Gb, so I couldn't attach it.
6 Commenti
David Hill
il 13 Set 2022
You cannot have a matrix with different number of rows or columns. What you are trying to do will not work. What are you really trying to do? What is the big picture?
Risposta accettata
Image Analyst
il 13 Set 2022
Evidently you have enough memory to hold your variables, you just can't "plot several graphs for statistical analization". Since you can't "remove" zeros, which would leave the matrix with uneven/ragged borders, you should assign them to nan. Then you can use the 'omitnan' in functions like mean(), and functions like plot() will ignore them.
m(m==0) = nan;
% Get mean of matrix:
meanOfM = mean(m(:), 'omitnan');
% or plot each column:
[rows, columns] = size(m);
for col = 1 : columns
plot(m(:, col), '-');
hold on;
end
xlabel('row')
ylabel('Value of m')
grid on;
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Matrix Indexing 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!

