比较矩阵matlab 2

时间:2011-11-27 19:24:00

标签: math matlab matrix

这是关于比较两个矩阵的第二个问题。我试图比较两个矩阵,(3x3)和(4x6)。下面的代码工作正常,但如果我想用注释行替换矩阵z,matlab不喜欢我的代码了:(你能否表明我的错误! 我会很高兴, MGM

clear
x=[0  4  8 ;3 2 5 ;2 1 5 ]';
y=[0 1.1 2 2.1 3.6 7.3;1 3 2.2 2 3 2.4 ;2 1 3.3 3.4 6.7 5.8;3 3.4 5 6.6 6.5 7.8]';
z=zeros(6,3);
for i=1:3
    for j=1:3
        for p=1:6
            for r=1:4
                if x(i,1)==y(p,1)
                    z(p,j)=x(i,j);
                elseif (x(i,1)<y(p,1))&&(y(p,1)<x(i+1,1))
            z(p,j)=(x(i,j)+x(i+1,j))./2;%(x(i,j)+x(i+1,j)+x(i,j+1)+x(i+1,j+1))./4
        end
    end
        end
    end
end

1 个答案:

答案 0 :(得分:0)

你发布的代码并不完美 - 你选择的数字组合很幸运;)。

只是比较你发布的elseif语句中的值,你会发现这段代码没有按预期工作。

切换此行:

elseif (x(i,1)<y(p,1))&&(y(p,1)<x(i+1,1))

为:

elseif ((y(p,1)<x(i+1,1)&&x(i,1)<y(p,1)))

这是因为matlab评估了语句中的第一个表达式,如果它是false,则它不会检查第二个语句 - 因此你不会收到错误,因为你的代码中最后一个元素的第一个statemaent是假8&lt; 7.3

您得到的错误是,因为您尝试访问矩阵索引之外的元素。

你有一个3x3矩阵并尝试在for循环的最后一次运行中访问元素(4,1)。与y矩阵相同的问题。