如果我有矩阵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。提前谢谢。
答案 0 :(得分:0)
易!
假设您的矩阵已经在文件A.xlsx
,工作表Sheet1
和matlab中的矩阵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);
您将上面的第二个代码粘贴到另一个Script
上,然后运行它。
干杯,...