Matlab矩阵数据集对比及一定的输出

Matlab Matrix Dataset Comparison and Certain Output

如果我有矩阵 A 和 B:A=[400(行)x60(列)] B=[150x60](注意:矩阵 B 的列固定为 60,但行是可变的,可以从1-400)

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

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

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

简单!

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

此外,假设在这种情况下,CLOSEAB 之间的某个运算符,直到第 m 行,因为例如 norm,其中 m 取 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

当然,这没有任何'Continuous'比较。你应该从以下意义上理解:

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

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

干杯,...