Matrix manipulations

Hey all,
I'm having a bit of trouble calculating conditional proabbilities, say I have a matrix such as:
CgvB =
0 0
0 0
0 0
0 1
0 1
0 1
0 1
0 1
0 1
0 1
1 0
1 0
1 1
1 1
and I want to calculate the probability of having a 1 on the 2nd column given having a 1 on the first column in this case ists 2/14, but I'm using a script to automatically calculate all these probabilties. This is what I've started with: p=CgvB(length(CgvB(:,:)==1))/length(CgvB); this works but for empty matrices i get the error :Subscript indices must either be real positive integers or logicals. How can I perform these calculations without errors? Thanks for any help.

 採用された回答

Paulo Silva
Paulo Silva 2011 年 6 月 5 日

0 投票

You can ensure that your array has the proper dimensions before doing the calculation
[sr,sc]=size(CgvB);
if (sr>0 & sc==2)
p=CgvB(length(CgvB(:,:)==1))/length(CgvB);
else
disp('The array must have at least one row and two columns');
end

2 件のコメント

Ebrahim
Ebrahim 2011 年 6 月 5 日
Thanks for that. Can I also just say after else, that p = []? This is because I don't want to display anything but just continue with my calculations.
Paulo Silva
Paulo Silva 2011 年 6 月 5 日
yes you can give p some value when the arrays doesn't have the proper dimensions, it can also be done at the start of the code, give p a default value, you can use Inf or NaN instead of []

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by