Matlab矩阵数据集的比较与确定输出

Matlab矩阵数据集的比较与确定输出,matlab,matrix,dataset,comparison,match,Matlab,Matrix,Dataset,Comparison,Match,如果我有矩阵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: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%)

如果有人有答案或者可以帮忙,请告诉我,我需要这个程序。我正在使用Matlab2014a。提前谢谢。

简单

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

另外,假设在此上下文中,
CLOSE
A
B
之间的某个运算符,一直到
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

当然,这没有任何“连续”比较。您应该在以下意义上进行说明:

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

%读B
%计算范数
结果(m)=矩阵比较(Bm);
结束
%绘制结果
绘图(结果);
您可以将上面的第二个代码粘贴到另一个
脚本上
,然后运行它

干杯,

如果你需要这个项目,不要指望别人在业余时间帮你做。自己动手;如果你被某些特定的事情缠住了,问问这个