百韵网 >>  正文

矩阵AB=C如何求A?最好有C#、DELPHI或其它语言的算法 矩阵AB=C已知A,C怎样求B

来源:www.baiyundou.net   日期:较早时间
这是我从大富翁笔记中给你复制的: http://www.delphibbs.com/delphibbs/dispq.asp?lid=3368718 希望对你有帮助。 例:进行矩阵运算(b'*b)*(b'*y'), 其中b是3*2矩阵,y是1*3矩阵。

在Delphi应用程序中,可以采用以下的程序段将参与运算的矩阵b、y保存成M文件,这样Matlab就可以通过执行相应的M文件,获得参与运算的矩阵b、y。应用程序段如下:(程序段中fb、fy是事先定义好的textfile类型的文件变量,l是初值为1的整数,b、y是事先定义好的数组变量,存储用于构造矩阵的数值;'D:\matlab\yourfolder\delphioutb.m'是保存矩阵b的M文件路径及文件名,'D:\matlab\yourfolder\delphiouty.m'是保存矩阵y的M文件路径及文件名)

*********创建保存矩阵b的M文件*********
//注:在Matlab中整个输人矩阵必须以"[]"为其首尾,矩阵的行与行之间必须用分号";"或回车位隔离,矩阵元素必须由逗号","或空格分离。
assignfile(fb,'d:\matlab\yourfolder\delphioutb.m');
Rewrite(Fb);
write(fb,'b=[');
l:=1;
for j:=1 to 3 do
for i:=1 to 2 do
if i=1 then
begin
Write(Fb,b[l],',');
l:=l+1;
end
else
begin
if j<3 then
begin
Write(Fb,b[l],';');
l:=l+1;
end
else
begin
Write(Fb,b[l],']');
l:=l+1;
end;
end;
CloseFile(Fb);

*********创建保存矩阵y的M文件*********
assignfile(fy,'D:\matlab\yourfolder\delphiouty.m');
Rewrite(Fy);
write(fy,'y=[');
for k:=1 to 3 do
if k<3 then write(Fy,y[k],',')
else write(fy,y[k],']');
CloseFile(Fy);

三、Matlab如何接受应用程序传递来的数据并进行计算

前面介绍过,由于M文件只有在Matlab集成环境中才能被识别和自动执行,而根据后台运作的要求不能显示地进人Matlab集成环境。但我们可以通过对matlabrc.m文件的修改,将Matlab要完成的操作编写成M文件,加人matlabrc.m中。下面笔者仍依前面例题的计算要求,来说明如何编写Matlab接收数据、进行计算、数据输出的M文件(取名为D:\matlab\yourfolder\Mymatlabfile.m).
1、用记事本输入以下代码,保存在自己的目录(如D:\matlab\yourfolder)下,取名为Mymatlabfile.m
delphioutb //保存矩阵b的M文件
delphiouty //保存矩阵y的M文件
m=(b'*b)*(b'*y')
save D:\matlab\yourfolder\matlaboutfile.dat m -ascii -double
quit
2、将D:\matlab\toolbox\local\matlabrc.m首先保存为一个备份文件matlabrcbak.m,然后对原文件进行编辑,将下列语句加在文件最后:
if exist('D:\matlab\yourfolder\Mymatlabfile.m')
Mymatlabfile
end

3、完成上述内容后,只要在应用程序中启动MATLAB,就会看到Matlab在启动后自动执行了Mymatlabfile文件,并且生成相应结果。

四、在Delphi中如何启动Matlab

将前面步骤处理完后,我们可以用以下程序隐式启动Matlab:
在上一步中我们在原文件修改后加它另存D:\matlab\toolbox\local\Mymatlabrc.m文件,然后在delphi中输入以下语句:

copyfile('D:\matlab\toolbox\Mymatlabrc.m','c:\matlab\toolbox\local\matlabrc.m',false);
winexec('D:\matlab\bin\win32\matlab.exe',SW_MINIMIZE);
实际过程就是先执行拷贝,将原来的matlabrc文件修改成我们期待的内容,然后执行matlab.

五、Delphi如何接受Matlab输出结果

Matlab将计算结果通过save D:\matlab\yourfolder\matlaboutfile.dat m -ascii -double进行输出,所以我们可以通过下面程序获取
计算结果,并将结果通过mid放进delphi中添加的memo组件中:(Fa为textfle类型变量)
if FileExists('D:\matlab\yourfolder\matlaboutfile.dat') then
AssignFile(Fa,'D:\matlab\yourfolder\matlaboutfile.dat');
Reset(Fa);
memo1.Clear;
While not Eof(Fa) do
begin
readln(Fa,mid);
memo1.Lines.Add(mid);
end;
closefile(Fa);
另外,在应用上述步骤完成接口后,还需要在应用程序中添加以下代码,以还原Matlab原始环境参数设定:
copyfile('D:\matlab\toolbox\local\matlabrcbak.m','D:\matlab\toolbox\local\matlabrc.m',false);
实际就是将备份的文件拷贝回来,以恢复matlabrc原来面目。

B C矩阵都是4*N矩阵(4行N列)怎么能相乘呢?

矩阵AB=C已知A,C怎样求B~

B=C\A或者B=A的逆乘以C


相关要点总结:

17672592545:矩阵AB=C如何求A?最好有C#、DELPHI或其它语言的算法
颛树答:在上一步中我们在原文件修改后加它另存D:\matlab\toolbox\local\Mymatlabrc.m文件,然后在delphi中输入以下语句:copyfile('D:\matlab\toolbox\Mymatlabrc.m','c:\matlab\toolbox\local\matlabrc.m',false);winexec('D:\matlab\bin\win32\matlab.exe',SW_MINIMIZE);实际过程就是先执行拷贝,将...

17672592545:关于矩阵乘法,矩阵A乘矩阵B得到矩阵C,那么由矩阵C怎么得到矩阵A?
颛树答:首先,到底你是矩阵A乘矩阵B还是乘以矩阵B,这是完全不同的,我估计是乘以,那么要求A,A=C乘以B的逆矩阵 关于B如何求逆,你可以百度矩阵求逆,方法很多

17672592545:老师, 请问 矩阵A.B.C. AB=C A未知 B.C已知 怎么求A?
颛树答:A = CB^-1

17672592545:如果两个矩阵AB=C,其中B不可逆,怎么求矩阵A?
颛树答:你说的这种题目,A,B,C必有一些凑好的特殊性,希望拿出具体题目来看。如果不是基于题目,而单纯是一个问题的话,我觉得只能把A写成a11,a12,a13...这样的形式,然后乘以B,看对应位置元素相等,列方程解。

17672592545:已知矩阵b和c,而矩阵a满足ab=c,则解出矩阵a方法怎样
颛树答:问题不难,回答如下:

17672592545:n阶矩阵A、B、C,若AB=C,且B可逆,则A,C等价吗?
颛树答:等价。若 AB=C, 则 C 的行向量可由B的行向量线性表示。由A可逆得 B = A^-1C, 所以 B 的行向量也可由C的行向量线性表示。故B的行向量与C的行向量等价。矩阵运算在科学计算中非常重要,而矩阵的基本运算包括矩阵的加法,减法,数乘,转置,共轭和共轭转置。

17672592545:如何证明AB= C
颛树答:AB=C包含三个矩阵,由题意得矩阵可逆则为方阵,然后可根据矩阵分块原理得出 当方阵在A的左边,如BA=C(其中B可逆),则A的行向量可用C的行向量表示 当方阵在A的右边,如AB=C(其中B可逆),则A的列向量可由C的列向量表示 引用李永乐老师书上的说明 源自线性辅导讲义2021版32页。掌握了上述理论再...

17672592545:为什么矩阵A乘矩阵B得矩阵C,则A的行列式
颛树答:对于方阵相乘得到的式子 可以两边直接取行列式 即AB=C时,|A||B|=|C| 于是|B|不等于0时 直接得到|A|=|C|/|B|

17672592545:如何理解矩阵AB= AC?
颛树答:1. 矩阵AB=AC,如果A是n阶可逆矩阵,左右两边同时左乘A的逆矩阵,可以得到B=C。如果A不是零矩阵,但是不可逆,B、C不一定相等。举个简单例子:A= 1 0 0 0 B= 1 1 0 0 C= 1 0 0 0 虽然B、C不相等,但是AB=AC成立。2. A是m*n矩阵(m>n),且r(A)=n时。可以取...

17672592545:为什么若矩阵AB=C,C的列向量可以由A的列向量线性表示
颛树答:这里需要运用到分阵矩阵的公式。因为将A按列分块得 C = AB= (α1,.,αs) B ,根据分块矩阵的乘法公式,C 的第1列就等于 α1,.,αs 分别乘B的第1列的各元素之和。即 C 的第1列可由列向量线性表示。其中E1,E3分别表示1阶、3阶单位矩阵,O表示1×3的零矩阵,而 同时又因为同一个...

(编辑:本站网友)
相关推荐
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 百韵网