How to save the several results of a program in an array?
Show older comments
clc;
clear;
close all;
tic
load colon.mat
data=colon;
[n,m]=size(data);
%%
%supervised
d=10;
l=1;
t=1;
for i=1:n
if data(i,m)==0
data(i,m)=2;
end
end
data1=[];
data2=[];
for i=1:n
if data(i,m)==1
data1(l,:)=data(i,1:m-1);
l=l+1;
else
data2(t,:)=data(i,1:m-1);
t=t+1;
end
end
if t>l
data1(l:t-1,1:m-1)=0;
else
data2(t:l-1,1:m-1)=0;
end
%computing Distance measures
for i=1: m-1
thisCol1=data1(:,i);
thisCol2=data2(:,i);
a6(i)=fTonimotoDist(thisCol1,thisCol2);
end
%sorting the distances
[A6,indA6]=sort(a6,'descend'); %Tonimoto
%selecting Threshold
datas6=data(:,indA6(1:d));
data6=[datas6 data(:,m)];
%%data6 classify%%tanimoto
[n,m]=size(data6);
for k=1:it
test=data6(test_rows,:);
train=data6(train_rows,:);
xtest=test(:,1:m-1);
ytest=test(:,m);
xtrain=train(:,1:m-1);
ytrain=train(:,m);
[rforest, DT , sk ] = classificationa(xtest,xtrain,ytrain);
[Arforest6(k), ADT6(k) , Ask6(k)] = allaccuracydata(rforest, DT , sk , ytest);
end
averf6=mean(Arforest6);
avedt6=mean(ADT6);
avesk6=mean(Ask6);
x6=[averf6, avedt6 , avesk6];
disp('tanimoto'); disp(x6);
In this code d is the number of selected features(columns) so we use 10 features of the data(colon attached) to classify It, my question is suppose that we want to obtain the average of Arforest (averf6) once for d=10, once for d=20,for d=30,d=40 and d=50 and save the results of averf6 for each of them in one array(forexample a) to plot the array.
how can I save the results of these different runing the program, in one array based on changing in d [10 20 30 40 50], I have problem in this part, and also how to define d that have several values, should I define d as an array forexample d=[10,20,30,40,50]; ?
Thanks
Accepted Answer
More Answers (1)
phdcomputer Eng
on 23 Dec 2019
Edited: phdcomputer Eng
on 23 Dec 2019
0 votes
8 Comments
Here is why it is badly named: https://www.mathworks.com/help/matlab/ref/colon.html
Note that you would sgnificantly benefit from half an hour learning how to use the debugging tools, then you would learn how to debug your own code. Debugging your own code is much faster than relying on random strangers on the internet to do it for you.
phdcomputer Eng
on 24 Dec 2019
phdcomputer Eng
on 24 Dec 2019
Stephen23
on 24 Dec 2019
I do not have the Statistics Toolbox, so I cannot run this code.
You can debug your own code by investigating when and where those NaN values come from. For example, a simple way to start investigating this is to display the function outputs on each iteration (to check if they are non-NaN), e.g.:
...
for jj = 1:nV
d = dV(jj);
...
for k = 1:it
...
disp(k) % do you get 10 iterations?
[XX,YY,ZZ] = allaccuracydata(rforest, DT , sk , ytest) % display!
Arforest6(jj,k) = XX
ADT6(jj,k) = YY
Ask6(jj,k) = ZZ
end
end
% For some reason you moved these lines inside the loop, but they should be here:
averf6=mean(Arforest6,2);
avedt6=mean(ADT6,2);
avesk6=mean(Ask6,2);
phdcomputer Eng
on 25 Dec 2019
"should I use these lines in the for k=1:it loop?"
Yes. That is exactly what I showed you. Then you can check what results are generated on each loop iteration, and continue to investigate the iterations that are not generating the results that you expect.
phdcomputer Eng
on 28 Dec 2019
Edited: phdcomputer Eng
on 28 Dec 2019
Categories
Find more on Timetables in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!