Matlab矩阵运算问题

题目是英文的跪求大神给code!!可以提高悬赏谢谢!... 题目是英文的 跪求大神给code!!可以提高悬赏
谢谢!
展开
 我来答
tianxiawulang
2013-09-23 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2658万
展开全部

这个问题我考虑了很长时间。

 

单就编写max_plus函数而言,非常简单,代码如下(根据题中要求,不需要检查矩阵维数是否正确):

function C = maxplus(A, B)
% C的行数与A行数相同,C列数与B列数相同
for i = 1 : size(A, 1)
    for j = 1 : size(B, 2)
        C(i, j) = max( A(i, :) + B(:, j).' );
    end
end

 

测试实例:

>> A = round(rand(5, 3)*10)
A =
     7     1     8
    10     7     7
     8     4    10
     7     1    10
     5     6     1
>> B = round(rand(3, 4)*10)
B =
     4     6     7     7
     5     0    10     4
     3     6     8     6
>> C = maxplus(A, B)
C =
    11    14    16    14
    14    16    17    17
    13    16    18    16
    13    16    18    16
    11    11    16    12

第二问有些难度:找到矩阵E,使得A⊙E=A。

由于百度知道系统的排版缺陷,公式的表达比较困难,所以,具体的分析过程我就不写了。基本的思路就是,设定矩阵A和E的元素用aij、eij表示,则根据运算的规则,可以推导出,每个eij都应该满足一组不等式:

eij <= [akj-aki], k=1..n

并且必须有一个等式成立,所以 eij 就是右侧向量的最小值,即

E(i, j) = min( A(:,j) - A(:,i) );

然后用一个简单的二重for循环即可计算出E:

function B = E_maxplus(A)
B = A;
for i = 1:size(A,1)
    for j = 1:size(A,2)
        B(i, j) = min( A(:,j) - A(:,i) );
    end
end

 

举例:

>> A = magic(4)
A =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1
>> B = E_maxplus(A)
B =
     0   -14   -13    -3
   -10     0    -1   -13
   -11    -1     0   -14
    -3   -11   -10     0
>> C = maxplus(A, B)
C =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

第三问,是否存在F,使得A⊙F=E?这个我还没想明白。楼主可以尝试提高悬赏刺激一下,也许我能想出答案(不是敲诈,我觉得自己为回答这个问题的付出对得起最高的悬赏)。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式