BRMLtoolbox pot() function not defined.
I am working with the BRMLtoolbox for MATLAB. You can download it in the link provided and just run setup.m file.
This is the structure of the BRMLtoolbox:

I was trying to work with one of the Demo Exercises, as described in the book Bayesian Reasoning and Machine Learning at page 35 of the pdf. For simplicity, I've taken a screenshot of the page:
Now, you don't need to know anything about the underlying mathematics to help me solve this issue. I am new to MATLAB (started learning it today, coming from Python). I started going through the demoClouseau.m file contained in the DemosExercises folder. This is what it looks like:
function demoClouseau
%DEMOCLOUSEAU inspector clouseau exampleimport brml.*
butler=3; maid=2; knife=1; % Variable order is arbitary
murderer=1; notmurderer=2; used=1; notused=2; % define states, starting from 1. % The following definitions of variable are not necessary for computation,
% but are useful for displaying table entries:
variable(butler).name='butler'; variable(butler).domain = {'murderer','not murderer'};
variable(maid).name='maid'; variable(maid).domain ={'murderer','not murderer'};
variable(knife).name='knife'; variable(knife).domain={'used','not used'}; % Three potential since p(butler,maid,knife)=p(knife|butler,maid)p(butler)p(maid).
% potential numbering is arbitary pot(butler)=array;
pot(butler).variables=butler;
pot(butler).table(murderer)=0.6;
pot(butler).table(notmurderer)=0.4; pot(maid)=array;
pot(maid).variables=maid;
pot(maid).table(murderer)=0.2;
pot(maid).table(notmurderer)=0.8; pot(knife)=array;
pot(knife).variables=[knife,butler,maid]; % define array below using this variable order
pot(knife).table(used, notmurderer, notmurderer)=0.3;
pot(knife).table(used, notmurderer, murderer) =0.2;
pot(knife).table(used, murderer, notmurderer)=0.6;
pot(knife).table(used, murderer, murderer) =0.1;
pot(knife).table(notused,:,:)=1-pot(knife).table(used,:,:); % due to normalisationjointpot = multpots(pot); % joint distribution
drawNet(dag(pot),variable);
disp('p(butler|knife=used):')
disptable(condpot(setpot(jointpot,knife,used),butler),variable);Now, I can run this script no problem and this is the output of it:
And this is the plot that comes out:

So it seems to be running no problem! However, if I just use the command line and type
import brml.*
pot(1)As suggested in the book, I get an error! `Undefined function or variable 'pot'.` What is pot? Is it a variable? Is it a function? Is it a class? I thought it was a class defined in the BRMLtoolbox, but I cannot find it.
I tried debugging the code by putting a breakpoint as such:
And there are some weird things happening:
- First of all, the code did not break, I did not get the error above.
- Secondly, if Now I write `pot` in the Console, I get an answer!
So somehow, pot here works, although it is not defined in the code!
What is going on? I cannot even understand the syntax, it seems to kind of define `pot` on the fly with the pot(butler) = array statement, but I can't quite figure it out.
Risposte (1)
0 voti
Categorie
Scopri di più su Data Type Conversion in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!