如何用matlab编程求函数f(m)有一个10*30的矩阵(已知) 从中任选m行(m=3:10)构成一个m*30的矩阵,选每列最小的元素相加.对于给定的m,它有许多种取法,求和会有很多个结果,取最小的记为f(m),然后并给
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 03:19:06
如何用matlab编程求函数f(m)有一个10*30的矩阵(已知) 从中任选m行(m=3:10)构成一个m*30的矩阵,选每列最小的元素相加.对于给定的m,它有许多种取法,求和会有很多个结果,取最小的记为f(m),然后并给
如何用matlab编程求函数f(m)
有一个10*30的矩阵(已知) 从中任选m行(m=3:10)构成一个m*30的矩阵,选每列最小的元素相加.
对于给定的m,它有许多种取法,求和会有很多个结果,取最小的记为f(m),然后并给出取到最小值f(m)时,取哪m行.
如何用matlab编程求函数f(m)有一个10*30的矩阵(已知) 从中任选m行(m=3:10)构成一个m*30的矩阵,选每列最小的元素相加.对于给定的m,它有许多种取法,求和会有很多个结果,取最小的记为f(m),然后并给
function [ms,minValue]=findm(a,m)
%a是输入的矩阵10*30
%m是输入元素
%minValue是最小值
%ms是取最小值时的行数
%由Wilif编写
label=combntns([1 2 3 4 5 6 7 8 9 10],m);
[r,~]=size(label);
temp_matrix=zeros(m,30);
minValue=0;
flag=0;
for i=1:r
for ii=1:m
temp_matrix(ii,:)=a(label(i,ii),:);
end
temp=sum(min(temp_matrix));
if i==1
minValue=temp;
flag=1;
else
if minValue>temp
minValue=temp;
flag=i;
end
end
end
ms=label(flag,:);
end
%% 因为数据量比较小,使用的是遍历的方法,编写不易,望请采纳