Standard deviation for three dimensional matrix
17 ビュー (過去 30 日間)
古いコメントを表示
I have a data file that has x, y, and z sets of data, dimensions 120x150x151. I need to plot the standard deviation of the numbers in x and y at each z. How can I use std() to accomplish this?
hold on
for counter=1:151
sd=std()
plot(z(counter),sd)
end
hold off
0 件のコメント
採用された回答
Mukul Rao
2015 年 6 月 24 日
I do not believe you need a loop for this. The 'std' function has the capability to account for direction as per the documentation :
If you would like to get the standard deviation along the x direction, use
stdYZ = std(mymatrix,1) %Assuming x changes along the columns
This returns the standard deviation along the x-direction, at each point with fixed Y and Z co-ordinates.
If you are looking for the standard deviation of an entire X-Y plane at each level Z, then I suggest using "std2" instead. Here is the documentation link:
In this case your code would look like
hold on
for counter=1:151
sd=std2(mydata(:,:,counter)) %Assuming matrix mydata is 120x150x151
plot(z(counter),sd)
end
hold off
3 件のコメント
Mukul Rao
2015 年 6 月 24 日
Like std2, use mean2 rather than mean. mean would return a 120x150 matrix and you are equating that to a matrix of size 1x151, hence the error message.
Eric
2015 年 6 月 24 日
Or if you don't have the Image Processing Toolbox:
StdDev=ones(1,151);
Mean=ones(1,151);
for counter=1:151
frame = Data(:,:,counter);
StdDev(counter)=std(frame(:));
Mean(counter)=mean(frame(:));
end
figure(2)
hold on
plot(X,Mean,'k')
plot(X,Mean(X)+StdDev(X),'r--')
plot(X,Mean(X)-StdDev(X),'r--')
hold off
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Scatter Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!