How to save the several results of a program in an array?
1 回表示 (過去 30 日間)
古いコメントを表示
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
0 件のコメント
採用された回答
Stephen23
2019 年 12 月 23 日
編集済み: Stephen23
2019 年 12 月 23 日
Assuming that those means are scalar values, then a simple loop:
dV = [10,20,30,40,50];
nV = numel(dV);
averf6 = nan(1,nV);
avedt6 = nan(1,nV);
avesk6 = nan(1,nV);
for jj = 1:nV
d = dV(jj);
... your code
averf6(jj) = mean(...)
avedt6(jj) = mean(...)
avesk6(jj) = mean(...)
end
8 件のコメント
Stephen23
2019 年 12 月 23 日
編集済み: Stephen23
2019 年 12 月 23 日
"...sure I use ctrl+i to indent the codes.I hope that the structue will be better."
Your code has exactly the same indentation as before. I cannot follow it.
Please align your code consistently in the MATLAB editor
- select all of the code
- press ctrl + i
その他の回答 (1 件)
phdcomputer Eng
2019 年 12 月 23 日
編集済み: phdcomputer Eng
2019 年 12 月 23 日
8 件のコメント
Stephen23
2019 年 12 月 26 日
編集済み: Stephen23
2019 年 12 月 26 日
"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.
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!