作业帮 > 综合 > 作业

关于MATLAB的一些问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/07 02:25:48
关于MATLAB的一些问题
现在知道x1,x2,x3...x25,如何编辑使得分别求rij=xi-xj的值(就是x1-x1,x1-x2,x1-x3.共有625项)
我的真实问题是这样的,已知x1,x2,x3...x25,25个二维向量,现在要求出rij=norm(xi-xj,2)的值,i=1:25,j=1:25;rij一共有625个值,最终结果生成一个25x25的矩阵.LS,
给你介绍两种方法吧第一种是比较直观的循环的方法,不过循环的速度是相对第二种方法比较慢的(对于你这个程序来说差不了多少),具体程序如下:
x=[1:25]; % 这是把你的数写成一个行向量的形式r=zeros(25);for index1=1:25    for index2=1:25        r(index1,index2)=x(index1)-x(index2);    endend
第二种方法为了避免用循环,咱使用矩阵的形式.x=[1:25]; % 这是把你的数写成一个行向量的形式a=repmat(x',[1,25]);b=repmat(x,[25,1]);result=a-b;
这两种得到的结果是相同的,我让x=[1:25];进行了一下验证,结果如下图: 

再问: LS,谢了。我的详细问题是已知x1,x2,x3.....x25,这25个二维向量。现在分别要求出(xi-xj)的范数长度,使用norm函数如下:要求出625个值
再答: 好的,你加我QQ吧,给你具体说说~QQ1837329143
再答: %% for index=1:25 eval(['x' num2str(index) '=randn(10);']); end % 上边3行是产生你原来的 x1 x2 x3 ... x25,如果你已经产生了,就不需要了 r=zeros(25); for index1=1:25 for index2=1:25 eval(['r(index1,index2)=norm(x' num2str(index1) '-x' num2str(index2) ',2);']); % 上边这句实际执行的 rij=norm(xi-xj,2) end end