作业帮 > 综合 > 作业

matlab循环and循环and循环.

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/27 18:37:29
matlab循环and循环and循环.
有这样一个矩阵:F=[1 2 1 1;1 2 1 3;1 3 1 1;1 3 1 3]; 又有个备用数字的集合P=[5 6 7 8 9];
现在要取遍它的每一行(这是第一个循环)
之后对它的这一行数值进行分析(这是第二个循环)
如何分析:现在有两个一维数组,i=[1 2 2 3]; j=[2 3 4 4];
依次取遍 i 与 j 中的数值,(第三个循环)
如,第一次时,i(1)=1;j(1)=2; 那么就让F第一行的第 i(1) 个数字与 j(1) 个数字作比较
这里加个判断:如果 F第一行的第 i(1) 个数字 等于 j(1) 个数字
则 令 F第一行的第 j(1) 个数字换成P中第一个数字(这样做只是为了找一个异于F中元素的值,使F第一行的第 i(1) 个数字 不等于 j(1) 个数字),
这里再加个标志值(n=0),
然后第一行的第i(2)与j(2);i(3)与j(3);i(4)与j(4);分别作了比较时,
只要还有第 i(k) 个数字 等于 j(k) 个数字的
就 对j(k) 个数字 替换P中下一个数字,(这里还需要一个循环)
并让那个标志值n=n+1
最后取遍F中的每一行,对每一行作了数值分析之后,分别输出每一行的标志值,找到标志值最小的那一行,并输出这一行.
可乱吧,我先举个例子
例如取到第一行是[1 2 1 1]
i=[1 2 2 3]; j=[2 3 4 4];,
直到取到 第 i(4) 与 j(4)作比较的时候才有F的这一行的第 i(1) 个数字 等于 j(1) 个数字),就让 j(4)=P(1)
n=n+1,
如果其它行中做完比较时的n都比第一行的大,那么就输出F的第一行 [1 2 1 1] 、标志值n=1.
(求教跪拜)
如果我的表述有问题或是太乱让朋友们没理清的,请一定要回复我.
F=[1 2 1 1;1 2 1 3;1 3 1 1;1 3 1 3];
P=[5 6 7 8 9];
i=[1 2 2 3];
j=[2 3 4 4];
[k1,k2]=size(F);
N=[];
for ii=1:k1
n=0;
for jj=1:k2
if F(ii,i(jj))==F(ii,j(jj))
n=n+1;
F(ii,j(jj))=P(n);
end
end
N=[N,n];
end
H=find(N==min(N))%输出n最小的行数
F(H,:)
有问题在问我,祝好运.
再问: 这里找到了标志值最小的第二行,输出的n是行数吧。我还想要得到那个标志值,比如第二行不会有F(ii,i(jj))==F(ii,j(jj)),所以标志值为0,要在哪里添加什么命令?如果还要输出所有行对应的标志值呢?麻烦了,送佛送到西,帮忙帮到家吧。谢谢,分值也会追加的。先选了满意啊
再答: 你只要在最后加行 N 就可以了,N就是所有行对应的标志值