模糊矩阵的合成

来源:互联网 发布:汉藏语系 知乎 编辑:程序博客网 时间:2024/04/29 05:40

用matlab做了一下才十行不到的代码,matlab的确很强大。昨天晚上用matlab写了一下,后来又想用c去实现同样的效果,不像matlab有封装好的求最大值最小值函数,在c中需要自己定义,代码写的还算详细的,配合注释应该能够看懂的。

#include<stdio.h>#define M 2#define N 3double a,b;double x,y;double min(double a,double b){if(a>=b)return b;elsereturn a;}double max(double x,double y){if(x>=y)return x;elsereturn y;}int main(){int i,j,p,q;int k,m;double temp[M][N];double a[M][N];double b[N][M];double final[M][M];//合成后的矩阵为final[M][M]printf("请输入需要合成的A矩阵:\n");for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%lf",&a[i][j]);printf("请输入需要合成的B矩阵:\n");for(p=0;p<N;p++)for(q=0;q<M;q++)scanf("%lf",&b[p][q]);//double a[M][N]={{0.4,0.7,0},{1,0.8,0.5}};//需要合成的矩阵//double b[N][M]={{1,0.7},{0.4,0.6},{0,0.3}};//需要合成的矩阵for(i=0;i<M;i++){for(j=0;j<M;j++){for(m=0;m<=M;m++)//取小 printf("第一个矩阵的%d行与第二个矩阵的第%d列相比较小的值为:%f\n",i,j,temp[i][m]);temp[i][m]=min(a[i][m],b[m][j]);for(k=0;k<M;k++)//取大 printf("f[%d][%d]=%.2f\n",i,j,f[i][j]);final[i][j]=max(max(temp[i][k],temp[i][k+1]),final[i][j]);//printf("i=%d j=%d\n",i,j);}}printf("合成后的矩阵为:\n");for(i=0;i<M;i++){for(j=0;j<M;j++){printf("%.3f  ",final[i][j]);//输出合成后的矩阵}printf("\n");}return 0;}



原创粉丝点击