一、熵权法加TOPSIS
为了防止我的遗忘,把代码放这里供大家参考
% 第一列为可靠性,第二列为故障率 Q_2 = []; % 对故障率进行正向化 MAX = max(Q_2); Q_2_M = Q_2(:,1); for i = 1:length(Q_2) Q_2_M(i,2) = abs(MAX(2)-Q_2(i,2)); end % 标准化处理 MIN = min(Q_2_M); MAX = max(Q_2_M); Q_2_MIAX = []; for i = 1:length(Q_2) Q_2_MIAX(i,1) = (Q_2_M(i,1)-MIN(1))/(MAX(1) - MIN(1)); Q_2_MIAX(i,2) = (Q_2_M(i,2)-MIN(2))/(MAX(2) - MIN(2)); end % 熵权法 Z = Q_2_MIAX; [n,m] = size(Z); D = zeros(1,m); % 初始化保存信息效用值的行向量 for i = 1:m x = Z(:,i); % 取出第i列的指标 p = x / sum(x); % 注意,p有可能为0,此时计算ln(p)*p时,Matlab会返回NaN,所以要判断 n = length(p); % 向量的长度 lnp = zeros(n,1); % 初始化最后的结果 for j = 1:n % 开始循环 if p(j) == 0 % 如果第i个元素为0 lnp(j) = 0; % 那么返回的第i个结果也为0 else lnp(j) = log(p(j)); end end %到这里结束 e = -sum(p .* lnp) / log(n); % 计算信息熵 D(i) = 1- e; % 计算信息效用值 end W = D ./ sum(D); % 将信息效用值归一化,得到权重 W % TOPSIS D_min = min(Q_2_MIAX); D_max = max(Q_2_MIAX); zonghedefen = 1:13; %生成记录点 for i = 1:13 %利用(C = D-/((D-)+(D+)))topsis模型与熵权进行结合 D_jia = sqrt(W(1)*(Q_2_MIAX(i,1)-D_max(1))^2+W(2)*(Q_2_MIAX(i,2)-D_max(2))^2); D_jian = sqrt(W(1)*(Q_2_MIAX(i,1)-D_min(1))^2+W(2)*(Q_2_MIAX(i,2)-D_min(2))^2); zonghedefen(i) = D_jian/(D_jia+D_jian); end zonghedefen = zonghedefen'
权重值的效果好像不太好,不管了,反正出出来了,哈哈哈哈哈~~~
二、sigmoid与arccot
队长让我出这种图
为了完成任务,找函数图像
找到sigmoid和arccot差不多
sigmoid
因此,只需要稍作修改即可。
关于怀疑那个,决定用cos函数,周期拉长,峰值调低即可
Matlab代码如下
x=linspace(-10.0,10.0);%定义自变量的取值 y=1./(1+exp(-0.6*(x - 1.5)));%sigmoid函数 函数里一定要用点除‘./’,因为是矩阵运算,所以要把纬度保持一致。 plot(x,y)%绘制图形 xlabel('x')%添加横轴名称 ylabel('y')%添加纵轴名称 legend('sigmoid')%添加曲线标记符 title('sigmoid')%给图像添加标题 hold on x=linspace(-10.0,10.0);%定义自变量的取值 y=1-(1./(1.0+exp(-0.7*(x + 1.5))));%sigmoid函数 函数里一定要用点除‘./’,因为是矩阵运算,所以要把纬度保持一致。 plot(x,y)%绘制图形 xlabel('x')%添加横轴名称 ylabel('y')%添加纵轴名称 legend('sigmoid')%添加曲线标记符 title('sigmoid')%给图像添加标题 hold on x=linspace(-10.0,10.0);%定义自变量的取值 y = (1/3).*cos((1/5)*x); plot(x,y)%绘制图形 hold off
加上一点修改
反正看上去效果还不错哈,哈哈哈,队长也很满意~~~~
注意:如果你的Word发生吃字现象,那么insert被你无意中按了一下,再按下去就好了