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 中。
此外,假设在这种情况下,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
下
当然,这没有任何'Continuous'比较。你应该从以下意义上理解:
for m=1:400
% Read B
<<Calculate B for m>>
% Calculate Norm
result(m)=matrixcomparison(Bm);
end
% Plot the results
plot(results);
您将上面的第二个代码粘贴到另一个 Script
上,然后 运行 它。
干杯,...
如果我有矩阵 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 中。
此外,假设在这种情况下,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
当然,这没有任何'Continuous'比较。你应该从以下意义上理解:
for m=1:400
% Read B
<<Calculate B for m>>
% Calculate Norm
result(m)=matrixcomparison(Bm);
end
% Plot the results
plot(results);
您将上面的第二个代码粘贴到另一个 Script
上,然后 运行 它。
干杯,...