Variation in parameter w by plotting a graph
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Tsang Chak Ng
am 16 Dez. 2017
Kommentiert: Tsang Chak Ng
am 16 Dez. 2017
I am trying to plot a graph in order to show how the parameter w varies.I have used the following commands but there is an error saying that the vectors are in different length.Can anyone spot out what have I done wrong,please?
clear all; Unimodal=[28,42,46,49,52,55,58,61,64,68,82]; c=length(Unimodal) a=max(Unimodal) b=min(Unimodal) [~, ~, rank] = unique(Unimodal) w=[0.3,0.4] figure; for j=1:length(w) for i=1:c S(i)=Unimodal(i) R(i)=(S(i)-b)/(a-b) F(i)=(rank(i)-1)/(c-1) J(i)=w(j)*R(i)+(1-w(j))*F(i) scaling(i) =7 * mat2gray(J(i)) plot(Unimodal,scaling); xlabel('Prices'); ylabel('Expensiveness'); title('Varying in w in Unimodal') end end
0 Kommentare
Akzeptierte Antwort
YT
am 16 Dez. 2017
Is this what you wanted?
You almost had it. The problem is, you tried to plot the 'Unimodal' with a fixed length of 11 against 'scaling' with a variable length (changing on every iteration). I did it like this:
clear all;
close all;
Unimodal = [28,42,46,49,52,55,58,61,64,68,82];
c = length(Unimodal) ;
a = max(Unimodal) ;
b = min(Unimodal) ;
[~, ~, rank] = unique(Unimodal) ;
w = [0.3,0.4];
for j = 1:length(w)
for i = 1:c
S(i) = Unimodal(i);
R(i) = (S(i)-b)/(a-b);
F(i) = (rank(i)-1)/(c-1) ;
J(i) = w(j)*R(i)+(1-w(j))*F(i) ;
scaling(i,j) = 7 * mat2gray(J(i)); %saving on (i,j) position of scaling
end
end
%plotting outside loop
figure();
plot(Unimodal,scaling);
xlabel('Prices');
ylabel('Expensiveness');
title('Varying in w in Unimodal')
legend('w1','w2');
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Annotations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!