Standard deviation: error because variable is of type double
조회 수: 1 (최근 30일)
이전 댓글 표시
I've created a 30 by 15 array of random numbers with mean M and standard deviation sd. I've then scaled the values from 0 to 1 because I want to show the matrix v using imshow, so I want the range to be from 0 to 1. Here is my code:
%create array of random numbers v = randn(30,15)*sd + M; %scale minimum = min(min(v)); maximum = max(max(v)); v = (v-minimum)/maximum;
I then want to find the new standard deviation and mean. To find the mean, I use:
Mean = mean(mean(V));
To find the standard deviation, I have used this code:
v = reshape(30*15, 1); standard_deviation = std(v);
Please tell me if there is a better way to get the standard deviation of ALL the numbers in a matrix, without reshaping to make it into a vector. When I use the above code, matlab throws an error: Undefined function 'sdt' for input arguments of type 'double'. Why is this? v is a vector so I can't see the problem with finding the standard deviation.
Thanks
댓글 수: 0
채택된 답변
yonatan gerufi
2014년 8월 28일
편집: yonatan gerufi
2014년 8월 28일
Hi Anna,
you can use
std2(matrix)
mean2(matrix)
functions instead.
your code did work for me,
v = randn(30,15)*sd + M;
minimum = min(min(v));
maximum = max(max(v));
v = (v-minimum)/maximum;
Mean = mean(mean(v));
v = reshape(v,30*15, 1);
standard_deviation = std(v);
and that's it. good luck!
댓글 수: 0
추가 답변 (2개)
Image Analyst
2014년 8월 28일
To get the mean and sd
theMean = mean(v(:)); % Works always.
theMean = mean2(v); % Only if you have the Image Processing Toolbox
sd = std(v(:)); % Cast v to double if it's uint8 (like from an image).
To show the array, there is no need to scale to the range 0-1 , simple use []:
imshow(v, []); % Require the Image Processing Toolbox (which you say you have).
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!