How to exclude zeros in a matrix?
조회 수: 9 (최근 30일)
이전 댓글 표시
Hello,
I am trying to get rid of the zero values in a matrix I have in V(:,:,i) in my for loop. However, I am getting an error, "Unable to perform assignment because the size of the left side is 297-by-448 and the size of the right side is 10611-by-1. Error in DIC_Data_Extraction (line 17) V(:,:,i) = nonzeros(data_dic_save.displacements(i).plot_v_ref_formatted);". Therfore, if you are able to help me out in resolving this error, it will be most appreciated, thanks. Below is a copy of my code. Also, unfortunatley, I can not attach my work space, so I hope this is enough information for you to help me out, thanks.
-Robert
% The displacements in the Y-direction
V = zeros(297,448);
% Vyy = zeros{20863,1};
for i = 1:8
V(:,:,i) = nonzeros(data_dic_save.displacements(i).plot_v_ref_formatted);
% Vyy{i} = {nonzeros(V(:,:,i))}
avg(i) = abs(mean(mean(V(:,:,i))));
med(i) = median(median(V(:,:,i)));
end
댓글 수: 4
Adam Danz
2019년 4월 3일
From your description, it seems like zeros aren't the problem. Your nonzeros() function is producing a columnar vector with 10611 elements and you're trying to store that in a 297x448 matrix.
채택된 답변
Jan
2019년 4월 3일
편집: Jan
2019년 4월 4일
The cell is the right approach:
for i = 1:8
Vyy{i} = nonzeros(data_dic_save.displacements(i).plot_v_ref_formatted);
avg(i) = abs(mean(Vyy{i}));
med(i) = median(Vyy{i});
end
Other have explained already, that arrays must be rectangular.
Another option would be to set the zeros to NaN:
V = zeros(297, 448, 8); % Pre-allocate all 3 dimensions!
for i = 1:8
aV = data_dic_save.displacements(i).plot_v_ref_formatted;
aV(aV == 0) = NaN;
V(:, :, i) = aV;
avg(i) = abs(mean(aV, 'all', 'omitnan'));
med(i) = median(aV, 'all', 'omitnan'); % See comments
end
Attention: I guessed, that you want the median of all values. Then median(X, 'all') is equivalent to median(X(:)), which is not necessarily the same as median(median(X, 1), 2). With nonzeros the output is a vector and there is no difference. Please check this explicitly.
댓글 수: 1
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!