Matlab矩阵数据集比较和某些输出

时间:2015-04-01 21:38:39

标签: matlab matrix dataset comparison match

如果我有矩阵A& B:A = [400(行)x60(列)] B = [150x60](注意:矩阵B有固定列= 60,但行变量可能从1-400变化)

我将这两个矩阵输入matlab,矩阵A固定并作为excel文件上传到matlab,而矩阵B直接从代码中测量。(注意:两个矩阵都包含数值)

现在我需要帮助的是以下内容:我想比较我从矩阵B得到的数据与矩阵A连续,如果B中的值是CLOSE(非必然等于)到A的值那么matlab输出让我们说真的。如果B中的值不是CLOSE或完全远离A的值,则输出False。 (注意:我不知道,但也许我们应该使用一定的阈值来确定A和B之间值的接近程度,如果我们应该有一定的阈值,那就说阈值应该是70%)

如果有人有答案或可以提供帮助,我需要该计划。我正在使用Matlab 2014a。提前谢谢。

1 个答案:

答案 0 :(得分:0)

易!

假设您的矩阵已经在文件A.xlsx,工作表Sheet1和matlab中的矩阵B中。

另外,假设在这种情况下,CLOSEAB之间的某个运算符,直到第m行,例如normm从1到400获取任何值。

Norm(A-Bm)=|A-Bm|= SUM_i=1^m SUM_j=1^60 (a(i,j)-bm(i,j))^2

让我们定义一个阈值,例如0.1*Norm(An)*Norm(Bn)

因此,代码如下:

function result=matrixcomparison(Bm)
% Read A Matrix
A=xlsread('A');
[ma,na]=size(A); %ma is always 400, na is always 60
[mb,nb]=size(Bm); %mb is variant, na is always 60
% Make a Projection Matrix
Am=A(1:mb,1:nb);
%Compute the norm
normABm=norm(Am-Bm);
%Compare
if (normABm>0.1*norm(Am)*norm(Bm))
    disp('Matrices are different.');
    result= 0;
else
    disp('Matrices are equal.');
    result= 1;
end

您将上述代码保存在matrixcomparison.m

文件下

当然,这没有任何“持续”比较。你应该从以下意义上做出:

for m=1:400
    % Read B
    <<Calculate B for m>>
    % Calculate Norm
    result(m)=matrixcomparison(Bm);   
end
% Plot the results
plot(results);         

您将上面的第二个代码粘贴到另一个Script上,然后运行它。

干杯,...