matlab语言高手请进

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:04:37
temp=I2((m-s1):(m+s1),(n-s1):(n+s1));
Out(m,n,k)=sum(sum(double(temp).*I(:,:,k)))/(9^2);
这句话是什么意思!能不能详细解释一下!怎么转换成C++语言啊!会的告诉我一下,好的加分!

大意是,从I2的二维矩阵里面,分离出它的,
从第m-s1行,到m+s1行,
从第n-s1列,到n+s1列
数据组成新的矩阵temp

然后再将temp相应的元素乘以权重因子I,再全部求和。
最后再除以81

C程序大致如下,当然系统的一些初始化,你还得改一改。
#include <stdio.h>
#include <conio.h>
#include <alloc.h>

main()
{
double I2[10][10];
double *temp,*I,out;
int m,n,s1,k;
int i,j,ii,jj;

m=2;
n=3;
s1=2;
k=2;

/*以下是I2和I的初始化值*/
for (i=0;i<10;i++)
for (j=0;j<10;j++)
I2[i][j]=i+j;
I=calloc((2*s1+1)*(2*s1+1), sizeof(double));
for (ii=-s1,i=0;ii<=s1;ii++,printf("\n"))
for (jj=-s1;jj<=s1;jj++,i++)
I[i]=1.0*(ii-jj)/10,printf("%lf\t",I[i]);

/*temp=I2((m-s1):(m+s1),(n-s1):(n+s1));语句*/
temp=calloc((2*s1+1)*(2*s1+1), sizeof(double));
for (ii=-s1,i=0;ii<=s1;ii++,printf("\n"))
for (jj=-s1;jj<=s1;jj++,i++)