Variation in parameter w by plotting a graph
2 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
YT
on 16 Dec 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');
More Answers (0)
See Also
Categories
Find more on Annotations 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!