Variation in parameter w by plotting a graph

2 ビュー (過去 30 日間)
Tsang Chak Ng
Tsang Chak Ng 2017 年 12 月 16 日
コメント済み: Tsang Chak Ng 2017 年 12 月 16 日
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

採用された回答

YT
YT 2017 年 12 月 16 日
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');
  1 件のコメント
Tsang Chak Ng
Tsang Chak Ng 2017 年 12 月 16 日
Thanks so much!!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by