回 帖 发 新 帖 刷新版面

主题:为什么每次计算结果总是不同(小数相乘)

x1=
-0.2852 -0.2406 -0.2812 -0.3074 -0.2824 -0.2891 -0.3103 -0.3069
-0.2814 -0.2398 -0.2777 -0.2948 -0.2753 -0.2856 -0.2859 -0.2943
-0.2853 -0.2412 -0.2858 -0.3127 -0.2844 -0.2928 -0.3132 -0.3102
-0.2864 -0.2419 -0.2866 -0.3136 -0.2847 -0.2937 -0.3141 -0.3128
-0.2858 -0.2414 -0.2862 -0.313 -0.2846 -0.2931 -0.3136 -0.3107
-0.2859 -0.2417 -0.2863 -0.3132 -0.2845 -0.2934 -0.3137 -0.3123
-0.2864 -0.2419 -0.2866 -0.3135 -0.2847 -0.2936 -0.314 -0.3127
-0.2748 -0.2178 -0.2284 -0.2306 -0.2505 -0.2356 -0.2635 -0.1813
-0.2607 -0.2296 -0.2501 -0.2939 -0.2467 -0.249 -0.2951 -0.2962
-0.2519 -0.2312 -0.2422 -0.2914 -0.2482 -0.2602 -0.3016 -0.2838
-0.2863 -0.2417 -0.2863 -0.3128 -0.2844 -0.2931 -0.313 -0.3115
-0.256 -0.2278 -0.1954 -0.2486 -0.2211 -0.1734 -0.2971 -0.272
-0.2157 -0.214 -0.1912 -0.2631 -0.2175 -0.2047 -0.3011 -0.2349
-0.2174 -0.2157 -0.1937 -0.2648 -0.2181 -0.2091 -0.3013 -0.2361
-0.2824 -0.2408 -0.283 -0.3114 -0.2825 -0.2911 -0.3138 -0.3113
-0.2835 -0.2409 -0.2812 -0.3105 -0.2785 -0.2892 -0.3127 -0.3091
-0.286 -0.2418 -0.2862 -0.3133 -0.2842 -0.2931 -0.3139 -0.3124
-0.2836 -0.241 -0.2839 -0.3128 -0.2824 -0.2901 -0.3129 -0.3097
-0.2817 -0.2392 -0.2765 -0.3071 -0.2794 -0.2812 -0.3089 -0.302
-0.2816 -0.2406 -0.2827 -0.3121 -0.2825 -0.2899 -0.3126 -0.3093
-0.2824 -0.2395 -0.2782 -0.308 -0.2807 -0.2887 -0.3067 -0.3027
-0.2857 -0.2416 -0.2847 -0.3112 -0.2837 -0.2927 -0.3126 -0.3121
-0.2117 -0.1921 -0.2581 -0.2421 -0.1811 -0.2601 -0.2683 -0.2708
0.5743 0.1474 0.6862 0.6152 2.0096 -0.0481 0.2424 0.5593
3.2749 7.914 2.7391 2.5379 2.0554 1.7192 2.3156 6.4776
-0.1709 -0.2252 -0.2591 -0.2892 -0.2694 -0.2704 -0.2949 -0.2832
-0.2253 -0.2151 -0.2518 -0.2961 -0.2186 -0.2597 -0.2554 -0.278
0.2864 -0.1741 -0.2202 -0.1286 -0.2169 -0.2528 0.0105 -0.144
%计算E1
y=pdist(x1);
E1=0.0;
for i=1:m-1
E1=E1+ y(i);
end
E1=sqrt(E1);
for loop=1:num
for num1=2:m-1
[center,u,obj] = fcm(x1,num1);
%计算E(K)
EK=0.0;
for k=1:num1
for i=1:m
obs=0.0;
for j=1:n
obs=obs+(x1(i,j)-center(k,j)).^2;
end
obs= sqrt(obs);
EK=EK+obs*u(k,i);
end
end

%计算DK
DK=0.0;
DK=max(pdist(center));

ind(loop,num1-1)=(E1*DK/(EK*num1)).^2;
end
index=find(ind==max(ind)); 

我的问题是,数值和公式没有问题,但是计算的结果index总是不太一样,我觉得是计算精度的问题,但是matlab也用的是double呀,请教

回复列表 (共1个回复)

沙发


可以试试符号运算

我来回复

您尚未登录,请登录后再回复。点此登录或注册