Creating a matrix of standard deviation values

조회 수: 5 (최근 30일)
rwn
rwn 2020년 5월 2일
답변: Image Analyst 2020년 5월 2일
I have 2 124x173 matrixes that I am trying to produce standard deviation matrixes for each of them. I would like to take the standard deviation of each element of the matrix and then create a new matrix of each standard deviation value of the same size. So in the end I have two new 124x173 matrixes consisting of the standard deviation values.
I have tried using std() function however this only returns a row vector I believe. When I have tried reshape this vector to 124x173 I get error "To reshape the number of elements must not change."
I have attached the code below most of it can be ignored for this problem however I will attach it all for a more full scope of what I am doing.
A=dlmread('B00001.txt', '',1,0); %Read first file
for k=2:100;
A=A+dlmread(['B00',sprintf('%03d.txt',k)], '',1,0); %Sum all Matrixes
end
A=A/100; %Average Matrixes
X = reshape(A(:,1),124,173); %Reshape all matrixes
Y = reshape(A(:,2),124,173);
U = reshape(A(:,3),124,173);
V = reshape(A(:,4),124,173);
AverageU=mean(nonzeros(U)) %Average Streamwise Velocity
AverageV=mean(nonzeros(V)) %Average Wall Velocity
stdU=std(U);
stdV=std(V);
pcolor(X,Y,U); %Contour Plot of Streamwise Velocities
hold on
shading interp
colormap(jet);
h = colorbar;
ylabel(h, 'm/s')
xlabel('x(mm)')
ylabel('y(mm)')
pause
pcolor(X,Y,V); %Contour plot of Wall Velocities
hold on
shading interp
colormap(jet);
h = colorbar;
ylabel(h, 'm/s')
xlabel('x(mm)')
ylabel('y(mm)')
pause
pcolor(X,Y,stdU); %Standard Deviation Contour plot of U
hold on
shading interp
colormap(jet);
h = colorbar;
ylabel(h, 'm/s')
xlabel('x(mm)')
ylabel('y(mm)')
pause
pcolor(X,Y,stdV); %Standard Deviation contour plot of V
hold on
shading interp
colormap(jet);
h = colorbar;
ylabel(h, 'm/s')
xlabel('x(mm)')
ylabel('y(mm)')

답변 (1개)

Image Analyst
Image Analyst 2020년 5월 2일
You need to use stdfilt() to take the standard deviation of all values in a certain neighborhood around each element:
windowSize = 5
stDevMatrix = stdfilt(A, ones(windowSize));
It requires the Image Processing Toolbox.

카테고리

Help CenterFile Exchange에서 Scatter Plots에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by