線量体積ヒストグラムについて知らなかったので調べてみたのですが、
問題とする領域の中で、被曝線量がx以上である領域の比率f(x)が線量体積ヒストグラムという認識でいいでしょうか。
ご提示のプログラムでいうところのVが、各ボクセルにおける被曝線量だと仮定しますと、問題とする領域の中での被ばく線量の(1-累積分布関数)が、線量体積ヒストグラムに相当するのかなと思います(累積分布関数はx"以下"である比率)。
という妄想の仮定のもとですが、下記のような形で計算できるのかなと思います。
%% 適当に範囲を選択。抜き出す範囲は図などを見ながらピックアップする必要があります。
% 2019aであればdrawcuboidという関数が便利かと思います。
Vpart = V(2:8,3:5,5:9); % とりあえず適当に範囲を指定しました。
% 最小値
min(Vpart(:)) % (:)が重要で、値を1次元にしています。つまりVpartに含まれる全ての値を対象に最小値を抽出する、という意味になります。
% 最大値
max(Vpart(:))
%% ヒストグラムから累積分布関数を求めて1から引く
[N, edges] = histcounts(Vpart(:), [-1.5:0.1:3]);
cumN = cumsum(N); % 累積カウント
sumN = sum(N); % 全voxel数
dvh = (sumN - cumN) / sumN; % 1 - 累積分布関数
figure, plot(edges(2:end), dvh, 'b.-');
%% statistics and machine learning toolboxをお持ちの場合、関数から直接計算可能
% データの累積分布関数の'function'を'survivor'に設定すると線量体積ヒストグラム
[dvh, x] = ecdf(Vpart(:),'function', 'survivor');
hold on;
plot(x, dvh, 'r.-');
私の理解が誤っているかもしれません。ご教示いただければ、それに応じて修正したプログラムに書き換えますので、コメントいただけましたら幸いです。