请教如何使用 for 来提取矩阵的最小值
有三个矩阵x1,x2,x3,每个矩阵都是3*3,需要找出每个矩阵的最小值。请教如何使用'for'来提取矩阵?比方说, for i=1:3
这时我想对x1进行操作,该如何指定? 我直接使用 xi,提示错误。
谢谢。
[ 本帖最后由 ChaChing 于 2009-5-24 10:08 编辑 ] 建议楼主找本基础的matlab书看看。
数组的下标应该用圆括号()。 假设
x=
应用两次min()函数不知道能不能满足你的要求:
>> min(min(x))
ans =
0 自己先看看,应该是基础问题!! 对于您的帖子,我想说三点:
1.如果您学过C语言,这个程序应该很容易就可以实现,我觉得Matlab语言和C语言有些地方是相通的;
2.根据您的帖子内容,我编了一段代码,不知是不是您想要的:
A=;
=size(A);%矩阵维数,M为矩阵行长度,N为矩阵列长度
t=inf;%t中间变量,赋值无穷大
for i=1:M, for j=1:N
if A(i,j)<t %if A(i,j)>t
k=1; r=[]; c=[]; v=[];%行标数组, 列标数组, 最小值数组
t=A(i,j); r(k)=i;c(k)=j;v(k)=t;
elseif A(i,j)==t
k=k+1; r(k)=i;c(k)=j; v(k)=t;
end
end; end
r', c', v'%转置
3.其实可以不用for循环来做,用min()、max()以及find()函数就可以实现,代码如下:
A=;
B=min(min(A));%B=max(max(A));
=find(A==B)
以上代码有不妥的地方,还望高手指点!谢谢
[ 本帖最后由 ChaChing 于 2009-5-24 10:12 编辑 ] 谢谢各位的帮忙。我想把问题澄清一下:如何对x1,x2,x3 进行同样的操作,这里x1,x2 x3 都是3*3的矩阵?
比方说,我想求x1,x2,x3这三个矩阵的最小值,可以使用三次: min(min(x1)), min(min(x2)),min(min(x3)).
那么,可不可以借助 for 命令,写一个循环语句,把三个矩阵的最小值都求出来:
for i=1:3
当i=1的时候,就对x1进行计算,,,,,
当i=2的时候, ,,,,,,,,x2,,,,,,,,,,,,,,,,
当i=3,,,,,,,,,,,,...........x3,,,,,,,,,,,,,,,
现在的问题是:如何指定这个矩阵x1, 当i=1的时候?
有没有一种办法,可以把x1中的1 与i=1 让matlab识别出来。
如果许多矩阵的时候,这样的循环语句会使编程简洁。我遇到的实际问题,有许多矩阵,而且 不同的矩阵有不同的维数。
[ 本帖最后由 xxdaishu 于 2008-4-19 20:13 编辑 ] 原帖由 xxdaishu 于 2008-4-20 04:29 发表 http://www.chinavib.com/forum/images/common/back.gif
谢谢各位的帮忙。我想把问题澄清一下:如何对x1,x2,x3 进行同样的操作,这里x1,x2 x3 都是3*3的矩阵?
比方说,我想求x1,x2,x3这三个矩阵的最小值,可以使用三次: min(min(x1)), min(min(x2)),min(min(x3)).
那么 ...
这样写,不知道您满意不?
X1=;
X2=;
X3=;
X={X1,X2,X3};
for i=1:3
min(min(X{i}))
end
:@(
回复 7楼 的帖子
谢谢了。遇到的实际问题,有许多矩阵,而且 不同的矩阵有不同的维数。
回复 8楼 的帖子
那你根据这个方法,自己再想办法解决吧[ 本帖最后由 ch_j1985 于 2008-4-20 09:31 编辑 ] 如果只是求最小值的话还是可以实现的,参看下面的程序。X1=;
X2=;
X3(:,:,1)=[-1,2,3;4,8,6;7,1,8;4,8,6;7,1,8];
X3(:,:,2)=[-1,2,3;4,8,6;7,1,8;4,8,6;7,1,8];
X={X1,X2,X3};
for i=1:3
a=X{i};
Xmin(i)=min(a(:));
end
Xmin 我晕倒,一个个都是偏离了楼主的意思,主要问题是Xi太多了要怎样批量处理吧.
以前用过类似的读取批量文件,不过还是查了半天终于找到eval这个函数来实现;
for k=1:3,
a=strcat('x',num2str(k));
b(k)=min(min(eval(a))) %每个矩阵取最小值存于b中
end
另外,我没料到就算那么多高手,都还是用i,j作为matlab的循环变量.个人觉得这点一定要跟C分开,因为这变量选择是C中最常见的.而在matlab中,i,j本身有虚数单位在里面.所以,程序中没有虚数处理自然没问题,如果涉及到了,出现问题,你就算把程序重新检查n遍都会觉得莫名其妙.我曾经深受其害,所以感触颇深.
页:
[1]