在matlab中求解矩阵方程

2024-03-12

我有一个类型的方程c = Ax + By where c, x and y是维度为 50,000 X 1 的向量,并且A and B是维度为 50,000 X 50,000 的矩阵。

Matlab有没有办法求矩阵A and B when c, x and y是已知的吗?

我有大约 100,000 个样本c, x, and y. A and B对所有人都保持不变。


Let X是所有 100,000 个的集合x你得到了(这样i第 列X等于x_i第一个向量)。
以同样的方式我们可以定义Y and C作为 2D 集合ys and c分别为。

你想解决的问题是为了A and B这样

C = AX + BY

您有 2 * 50,000^2 个未知数(所有条目A and B) and numel(C)方程。

因此,如果您拥有的数据向量数量为 100,000,您将拥有一个解决方案(最多线性相关样本)。如果您有超过 100,000 个样本,您可能会寻求最小二乘解。

重写:

C = [A B] * [X ; Y]  ==>  [X' Y'] * [A';B'] = C'

所以,我想

[A' ; B'] = pinv( [X' Y'] ) * C'

在Matlab中:

ABt = pinv( [X' Y'] ) * C';
A = ABt(1:50000,:)';
B = ABt(50001:end,:)';

如我错了请纠正我...

EDIT:
看来这里对于维度有相当大的争议。所以,我会尽力让它尽可能清楚。

Model:有两个(未知)矩阵A and B,每个尺寸为 50,000x50,000(总共 5e9 个未知数)。
一个观察值是一个三元组vectors: (x,y,c)每个这样的向量有 50,000 个元素(总共 150,000 个观察点每个样本)。基本模型假设是观测值是由以下方式生成的c = Ax + By在这个模型中。
任务: given n观察结果(即n三胞胎的vectors { (x_i, y_i, c_i) }_i=1..n)的任务是发现A and B.

现在,每个样本(x_i,y_i,c_i) 导出 50,000 个以下形式的方程c_i = Ax_i + By_i在未知中A and B. If样本数n is greater超过 100,000,那么就有超过 50,000 * 100,000 ( > 5e9 ) 个方程,系统为过度约束.

为了以矩阵形式编写系统,我建议将所有观察结果堆叠到矩阵中:

  • 一个矩阵X尺寸 50,000 xn以其i-th 列等于观察到的x_i
  • 一个矩阵Y尺寸 50,000 xn以其i-th 列等于观察到的y_i
  • 一个矩阵C尺寸 50,000 xn以其i-th 列等于观察到的c_i

有了这些矩阵,我们可以将模型写为:

C = A*X + B*Y

我希望这能让事情澄清一点。

感谢@Dan 和@woodchips 的兴趣和启发性的评论。

编辑(2):
将以下代码提交至octave http://weboctave.mimuw.edu.pl/weboctave/web/index.php#menus。在这个例子中,我只使用 2 个维度,而不是 50,000 个维度n=100,000我接受的观察n=100:

n = 100;
A = rand(2,2);
B = rand(2,2);
X = rand(2,n);
Y = rand(2,n);
C = A*X + B*Y + .001*randn(size(X)); % adding noise to observations 
ABt = pinv( [ X' Y'] ) * C';

检查地面实况模型之间的差异(A and B)并恢复ABt:

ABt - [A' ; B']

Yields

  ans =

   5.8457e-05   3.0483e-04
   1.1023e-04   6.1842e-05
  -1.2277e-04  -3.2866e-04
  -3.1930e-05  -5.2149e-05

这足够接近于零。 (请记住,观察结果是有噪声的,并且解是最小二乘解)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在matlab中求解矩阵方程 的相关文章

  • Python中矩阵元素的双重求和

    基于下面的简化示例 我想在我的代码中 from sympy import import numpy as np init printing x y symbols x y mat Matrix x 1 1 y X 1 2 3 Y 10 20
  • 动态调整自定义刻度数

    Taking SO 的一个例子 https stackoverflow com a 7139485 97160 我想根据当前视图调整轴刻度 这是默认行为 除非设置自定义的刻度数 下图展示了由此产生的行为 左侧是默认行为 右侧是带有自定义刻度
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 获取所有矩阵列逐元素乘积对的快速方法

    假设我有一个数字matrix set seed 1 mat lt matrix rnorm 1000 ncol 100 我想生成所有向量 它们是中所有唯一向量对的逐元素乘积的结果mat 我们如何改进下面的代码 all pairs lt t
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • 禁止 MATLAB 自动获取焦点[重复]

    这个问题在这里已经有答案了 我有以下问题 在我的 MATLAB 代码中 我使用如下语句 figure 1 更改某些数据的目标数字 问题是 在此 MATLAB 之后 系统将焦点集中在具有该图形的窗口上 当我在后台运行一个大脚本并尝试在计算机上
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • 在 RcppArmadillo 中将列向量乘以数值标量

    我在编译这个简单的程序时遇到一些麻烦c 代码使用Rcpp和RcppArmadillo包裹 采用以下简单示例 将矩阵的每一列乘以数值标量 code lt arma mat out Rcpp as
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • 如何在 MATLAB 中将矩阵元素除以列总和?

    有没有一种简单的方法可以将每个矩阵元素除以列和 例如 input 1 4 4 10 output 1 5 4 14 4 5 10 14 以下是执行此操作的不同方法的列表 使用bsxfun https www mathworks com he
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000

随机推荐

  • 将 JSON 文件添加到应用程序

    我想向我的应用程序添加一个 JSON 文件并在运行时读取该文件 我在网上查找了如何执行此操作 但大多数信息都与读取文件有关 我在网上找不到任何有关如何使文件在运行时可用的信息 大多数在线内容似乎都是从捆绑包中读取 但我不知道如何创建捆绑包或
  • 原始图像应使用哪种 MIME 类型?

    原始图像 https en wikipedia org wiki Raw image format由相机 扫描仪等生成 通常比 JPEG 图像提供更多的后处理灵活性 如果我从 Web 服务器提供此类文件 我应该使用哪种媒体类型 也称为 MI
  • 从 JTabbedPane 中删除蓝色

    这是我第一次使用 JTabbedPane 看起来默认的外观和感觉在选项卡上和组件本身周围显示蓝色边框 我怎样才能禁用该效果 好吧 有一种简单快速的方法可以通过将 LookAndFeel 设置为 SystemLookAndFeel 或任何其他
  • 如何指定使用 bitbake/yocto 构建哪个内核

    我正在努力使用 yocto daisy 生成新的 BSP 当我构建图像时 我收到以下警告 NOTE Resolving any missing task queue dependencies NOTE multiple providers
  • 如何在Android中使用Intent连接已知的WiFi?

    我有这样的事情 wifiNetworks ArrayList
  • 接口错误(0,'')

    我已经使用 Django 构建了一个网站 当我尝试执行查询时 我收到了这个恼人的错误 如果我重新启动 Apache 服务器 该错误将在短时间内消失 Traceback File usr local lib python2 7 site pa
  • Add-ADGroupMember 找不到具有标识的对象

    我正在编写一个 PowerShell 脚本来将大量用户导入到 AD 中 其中一项是根据用户的程序编号将用户添加到 AD 安全组 大多数情况下 这工作得很好 除非我拼写错误 或者其他简单的人为错误 但是 我们有 2 个安全组 每个人都必须添加
  • Prism WPF 动态区域

    假设我们有一个包含模块 A 和 B 的 Prism 7 应用程序 主窗口有一个选项卡控件和两个按钮 用于将模块 A 或 B 添加到选项卡控件 我为选项卡控制项创建了一个绑定 并实现了一个项模板 其中包括 Prism Region 其名称绑定
  • 为什么是$!运算符右结合?

    我刚刚学习 Haskell 我仍然不完全清楚何时以及如何强制进行严格评估 当我想要一个函数严格评估它的参数时 我发现自己在写 f x y z 这看起来很奇怪 不应该 是左关联的 这样我就可以写 f x y z 并让它做我想做的事 我是不是完
  • 如何在 AFNetworking 2.0+ 中使用 AFHTTPRequestOperationManager 使用 cookie?

    众所周知 AFHTTP会话管理器AFNetworking 2 0 支持cookie 但有可能吗AFHTTP请求操作管理器在 AFNetworking 2 0 中支持 cookie 是的 AFNetworking 使用基础 URL 加载系统
  • 在python中创建v7.3的.mat文件

    我需要在 python 或 matlab 中执行涉及 60000X70000 矩阵的乘法 我有 16GB RAM 能够轻松加载矩阵的每一行 这就是我所需要的 我可以在 python 中创建整个矩阵 但不能在 matlab 中创建 无论如何
  • TypeScript - 将子类转换为超类

    下面的问题有简单的解决办法吗 我想将对象 B 转换为对象 A 感谢您的解决方案 export interface A a string export interface B extends A b string const b B a te
  • 类型错误:当我尝试识别照片时,“元组”对象无法解释为整数

    我想测试训练好的模型 我使用keras和opencv 代码如下 创建参数解析器并传递它们 ap argparse ArgumentParser ap add argument i image required True help path
  • 从包含 100,000 个整数的列表中检索两个最高的项目

    如何从包含 100 000 个整数的列表中检索两个最高的项目 而不必先对整个列表进行排序 Use heapq nlargest http docs python org library heapq html heapq nlargest 如
  • 选择多个字段分组依据和总和

    我想用 linq 对象列表 进行查询 但我真的不知道该怎么做 我可以进行组和求和 但无法选择其余字段 例子 ID Value Name Category 1 5 Name1 Category1 1 7 Name1 Category1 2 1
  • Angular 2 ngOnInit 中的测试承诺

    我有一个 Angular 2 组件 我试图对其进行测试 但我遇到了麻烦 因为数据设置在ngOnInit函数 因此不能立即在单元测试中使用 用户视图 component ts import Component OnInit from angu
  • VBA Internet Explorer 自动化 - 下载文件时如何选择“打开”

    这是我在 stackoverflow 上遇到的第一个问题 我一直在寻找这个问题的解决方案一段时间 但没有找到任何帮助 我可能只是在搜索中使用了错误的关键字 但到目前为止我还没有运气 这是问题 在 VBA 中 如何从 Internet Exp
  • Mongoose findoneandupdate 返回更新的文档但未在数据库中更新

    架构是正确的 这些字段应该更新 因此 我从一次 API 调用中获取了部分数据 还有一些来自另一个 我将在下面注明 我的架构 var coin new Mongoose Schema id Number rank Number source
  • 带有多个提交按钮的表单的 Javascript onsubmit

    我有一个带有两个提交按钮的表单 一个称为 显示 另一个称为 取消注册 显示提交不需要确认 而其他则需要确认 本来我打算用 onsubmit return confirm Are you sure you want to remove the
  • 在matlab中求解矩阵方程

    我有一个类型的方程c Ax By where c x and y是维度为 50 000 X 1 的向量 并且A and B是维度为 50 000 X 50 000 的矩阵 Matlab有没有办法求矩阵A and B when c x and