導航:首頁 > 源碼編譯 > c均值演算法程序

c均值演算法程序

發布時間:2022-10-04 21:47:36

1. c語言中計算平均值的方法

#include <cstdlib>
#include "stdio.h"
#define N 10
double fun(double x[],double *y)
{
int i,j;
double av;
av=0;
for(i=0;i<N;i++)
av=av+x[i]/N;
for(i=j=0;i<N;i++)
if(x[i]>av)
y[j++]=x[i];
else
y[j++]=-1;
return av;
}
void main()
{
int i;
double x[N],y[N];
for(i=0;i<N;i++)
{
x[i]=rand()%50;
printf("%4.0f",x[i]);
}
printf("\n");
printf("\nThe average is:%f\n",fun(x,y));
for(i=0;y[i]>=0;i++)
printf("%5.1f",y[i]);
printf("\n");
}

2. 編寫一個程序,求兩個數的平均值(用C語言)

例子如下:

知識擴展:

算術平均數( arithmetic mean),又稱均值,是統計學中最基本、最常用的一種平均指標,分為簡單算術平均數、加權算術平均數。它主要適用於數值型數據,不適用於品質數據。

算術平均數是加權平均數的一種特殊形式(特殊在各項的權重相等)。在實際問題中,當各項權重不相等時,計算平均數時就要採用加權平均數;當各項權相等時,計算平均數就要採用算術平均數。

3. 模糊c均值演算法matlab程序

function [center, U, obj_fcn] = FCMClust(data, cluster_n, options)
% FCMClust.m 採用模糊C均值對數據集data聚為cluster_n類
%
% 用法:
% 1. [center,U,obj_fcn] = FCMClust(Data,N_cluster,options);
% 2. [center,U,obj_fcn] = FCMClust(Data,N_cluster);
%
% 輸入:
% data ---- nxm矩陣,表示n個樣本,每個樣本具有m的維特徵值
% N_cluster ---- 標量,表示聚合中心數目,即類別數
% options ---- 4x1矩陣,其中
% options(1): 隸屬度矩陣U的指數,>1 (預設值: 2.0)
% options(2): 最大迭代次數 (預設值: 100)
% options(3): 隸屬度最小變化量,迭代終止條件 (預設值: 1e-5)
% options(4): 每次迭代是否輸出信息標志 (預設值: 1)
% 輸出:
% center ---- 聚類中心
% U ---- 隸屬度矩陣
% obj_fcn ---- 目標函數值
% Example:
% data = rand(100,2);
% [center,U,obj_fcn] = FCMClust(data,2);
% plot(data(:,1), data(:,2),'o');
% hold on;
% maxU = max(U);
% index1 = find(U(1,:) == maxU);
% index2 = find(U(2,:) == maxU);
% line(data(index1,1),data(index1,2),'marker','*','color','g');
% line(data(index2,1),data(index2,2),'marker','*','color','r');
% plot([center([1 2],1)],[center([1 2],2)],'*','color','k')
% hold off;

if nargin ~= 2 & nargin ~= 3, %判斷輸入參數個數只能是2個或3個
error('Too many or too few input arguments!');
end

data_n = size(data, 1); % 求出data的第一維(rows)數,即樣本個數
in_n = size(data, 2); % 求出data的第二維(columns)數,即特徵值長度
% 默認操作參數
default_options = [2; % 隸屬度矩陣U的指數
100; % 最大迭代次數
1e-5; % 隸屬度最小變化量,迭代終止條件
1]; % 每次迭代是否輸出信息標志

if nargin == 2,
options = default_options;
else %分析有options做參數時候的情況
% 如果輸入參數個數是二那麼就調用默認的option;
if length(options) < 4, %如果用戶給的opition數少於4個那麼其他用默認值;
tmp = default_options;
tmp(1:length(options)) = options;
options = tmp;
end
% 返回options中是數的值為0(如NaN),不是數時為1
nan_index = find(isnan(options)==1);
%將denfault_options中對應位置的參數賦值給options中不是數的位置.
options(nan_index) = default_options(nan_index);
if options(1) <= 1, %如果模糊矩陣的指數小於等於1
error('The exponent should be greater than 1!');
end
end
%將options 中的分量分別賦值給四個變數;
expo = options(1); % 隸屬度矩陣U的指數
max_iter = options(2); % 最大迭代次數
min_impro = options(3); % 隸屬度最小變化量,迭代終止條件
display = options(4); % 每次迭代是否輸出信息標志

obj_fcn = zeros(max_iter, 1); % 初始化輸出參數obj_fcn

U = initfcm(cluster_n, data_n); % 初始化模糊分配矩陣,使U滿足列上相加為1,
% Main loop 主要循環
for i = 1:max_iter,
%在第k步循環中改變聚類中心ceneter,和分配函數U的隸屬度值;
[U, center, obj_fcn(i)] = stepfcm(data, U, cluster_n, expo);
if display,
fprintf('FCM:Iteration count = %d, obj. fcn = %f\n', i, obj_fcn(i));
end
% 終止條件判別
if i > 1,
if abs(obj_fcn(i) - obj_fcn(i-1)) < min_impro,
break;
end,
end
end

iter_n = i; % 實際迭代次數
obj_fcn(iter_n+1:max_iter) = [];

% 子函數
function U = initfcm(cluster_n, data_n)
% 初始化fcm的隸屬度函數矩陣
% 輸入:
% cluster_n ---- 聚類中心個數
% data_n ---- 樣本點數
% 輸出:
% U ---- 初始化的隸屬度矩陣
U = rand(cluster_n, data_n);
col_sum = sum(U);
U = U./col_sum(ones(cluster_n, 1), :);

% 子函數
function [U_new, center, obj_fcn] = stepfcm(data, U, cluster_n, expo)
% 模糊C均值聚類時迭代的一步
% 輸入:
% data ---- nxm矩陣,表示n個樣本,每個樣本具有m的維特徵值
% U ---- 隸屬度矩陣
% cluster_n ---- 標量,表示聚合中心數目,即類別數
% expo ---- 隸屬度矩陣U的指數
% 輸出:
% U_new ---- 迭代計算出的新的隸屬度矩陣
% center ---- 迭代計算出的新的聚類中心
% obj_fcn ---- 目標函數值
mf = U.^expo; % 隸屬度矩陣進行指數運算結果
center = mf*data./((ones(size(data, 2), 1)*sum(mf'))'); % 新聚類中心(5.4)式
dist = distfcm(center, data); % 計算距離矩陣
obj_fcn = sum(sum((dist.^2).*mf)); % 計算目標函數值 (5.1)式
tmp = dist.^(-2/(expo-1));
U_new = tmp./(ones(cluster_n, 1)*sum(tmp)); % 計算新的隸屬度矩陣 (5.3)式

% 子函數
function out = distfcm(center, data)
% 計算樣本點距離聚類中心的距離
% 輸入:
% center ---- 聚類中心
% data ---- 樣本點
% 輸出:
% out ---- 距離
out = zeros(size(center, 1), size(data, 1));
for k = 1:size(center, 1), % 對每一個聚類中心
% 每一次循環求得所有樣本點到一個聚類中心的距離
out(k, :) = sqrt(sum(((data-ones(size(data,1),1)*center(k,:)).^2)',1));
end

4. 用c語言編程:編寫一個程序,輸入4個數,求其平均值

程序代碼如下:

(4)c均值演算法程序擴展閱讀(C程序編寫注意事項):

1.每個程序中一定包含main()函數, 盡管C語言中對函數命名沒有限制。

2.printf函數永遠不會自動換行,只能用 來實現, 回車鍵進行的換行在編譯中會出現錯誤信息。

3.在vs2008中編譯.測試需要加 system("pause"); 來暫停dos自動退出導致的printf無法顯示。

4.所有自定義變數,必須聲明才能使用。

5.每行只書寫一條語句, 在運算符兩邊加上一個空格, 便於閱讀。

5. c語言求n個數的平均數

求n個數平均數源程序如下:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main(void)

{

int a[100] = { NULL };//初始化數組元素

int i = 0, n;//定義循環變數和正整數變數n

float sum = 0.0;//定義和變數為float型,注意計算的數據類型

float average = 0.0;//定義平均數變數為float型,注意計算的數據類型

printf("Please input n (n<100) :");

scanf("%d", &n);//輸入正整數n

printf("Please input %d integers:", n);//提示輸入幾個正整數

for (i = 0; i < n; i++)//循環輸入元素

{

scanf("%d", &a[i]);//輸入整形變數

sum += a[i];//循環輸入的時候同時進行求和

}

//for (i = n - 1; i >= 0; i--)

printf("the a[n] number: ");//倒敘輸出數組元素

for (i = 0; i < n; i++)//循環輸入元素

printf("%d ", a[i]);//倒敘輸出數組元素

printf(" ");

average = sum / (float)n;//注意不同類型之間的計算,這里加了類型強制轉換

printf("averge=%.2f ", average);//輸出平均數

return 0;

}

程序運行結果如下


(5)c均值演算法程序擴展閱讀:

其他實現方式:

#include <iostream>

int main()

{

int i;

double sum = 0;

int count = 0;

scanf("%d", &i);

while (i != -1)

{

sum = sum + i;

count++;

scanf("%d", &i);

}

printf("%.2f", sum / count);

return 0;

}

6. 用C語言計算一個數組內的所有數的平均值

printf("%f",d/10)這行代碼的輸出控制有誤,因為d定義的是int型,d/10還是int型,應該使用%d,而不是%f,%f是單精度浮點型數據。

格式說明由「%」和格式字元組成,如%d%f等。它的作用是將輸出的數據轉換為指定的格式輸出。格式說明總是由「%」字元開始的。不同類型的數據用不同的格式字元。

格式字元有d,o,x,u,c,s,f,e,g等。

1.%d整型輸出,%ld長整型輸出,

2.%o以八進制數形式輸出整數,

3.%x以十六進制數形式輸出整數,

4.%u以十進制數輸出unsigned型數據(無符號數)。

5.%c用來輸出一個字元,

改過之後運行結果:

(6)c均值演算法程序擴展閱讀:

需要說明的是:

1、一個C語言源程序可以由一個或多個源文件組成。

2、每個源文件可由一個或多個函數組成。

3、一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。是整個程序的入口。

4、源程序中可以有預處理命令(包括include 命令,ifdef、ifndef命令、define命令),預處理命令通常應放在源文件或源程序的最前面。

5、每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。結構體、聯合體、枚舉型的聲明的「}」後要加「 ;」。

6、標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。

網路-c語言

7. 用C語言設計一個求三個數平均值的程序

考慮到是初學者,所以用最簡單的思路來一個程序,定義四個變數,三個變數用於存儲輸入的三個數,第四個變數用於存儲所求的平均數。

代碼如下:

int main()

{

int a=0,b=0,c=0,average=0;

scanf("%d %d %d",&a, &b, &c);

average = (a+b+c)/3;

printf("%d", average);

return 0;

}

下圖中有注釋於結果測試:

8. 求一個C語言的求平均值的程序

我原來寫的求平均分的小程序 給你吧
#include<stdio.h>
void main()
{
int m,i;
float a[100],sum=0.0;
while(1)
{
printf("請輸入你要計算多少個數的平均分?按'0'退出程序:\n");
scanf("%d",&m);
if(m==0) break;
printf("\n");
printf("請分別輸入每個數,數與數之間用回車或空格隔開。\n");
for(i=0;i<m;i++)
{
scanf("%f",&a[i]);
sum+=a[i];
}
printf("你的總平均分為:%3.2f\n",sum/m);
}
}

9. c語言求平均值的演算法程序

暈,這個要看你的數據結構啊。比如鏈表結構,一個變數始終累加,一個計數器變數,最後兩個變數相除即可,累加變要浮點數

閱讀全文

與c均值演算法程序相關的資料

熱點內容
普通人電腦關機vs程序員關機 瀏覽:623
米酷建站源碼 瀏覽:110
氫氣app怎麼搜搭配 瀏覽:612
pdf綠盟 瀏覽:502
固態硬碟編譯器重建 瀏覽:387
怎樣編輯硬碟文件夾 瀏覽:657
安卓系統如何打開電腦軟體 瀏覽:570
android監聽事件處理 瀏覽:746
h3c伺服器怎麼看功率 瀏覽:121
前端錄制文件如何上傳伺服器 瀏覽:538
雅黑pdf 瀏覽:460
python使用領域 瀏覽:882
買蘭博基尼用什麼app 瀏覽:139
android關閉後台運行 瀏覽:507
python輸出路徑為超鏈接 瀏覽:535
caxa為什麼沒有加密鎖 瀏覽:794
伺服器怎麼設置才能用IP訪問 瀏覽:665
郵件附件加密後打開能顯示嗎 瀏覽:726
榮耀x10拍照演算法 瀏覽:571
androidgradle配置簽名 瀏覽:98