在matlab中将列表拆分为多个变量

2023-12-19

如果我有一个简短的列表(假设有两个或三个元素),我希望有一个函数可以将其拆分为多个变量。像这样的东西:

li=[42 43];
[a b]=split(li)
 --> a=42
 --> b=43

我正在寻找一些方法来使我的代码在 matlab 中更短。在某些情况下这会很好例如:

positions=zeros(10,3);
positions= [....];
[x y z]=split(max(positions,1))

而不是做:

pos=max(positions,1)
x=pos(1);
y=pos(2);
z=pos(3);

我知道做到这一点的唯一方法是使用deal。但是,这仅适用于元胞数组,或显式参数deal。因此,如果你想处理矩阵/向量,你必须首先转换为元胞数组num2cell/mat2cell. E.g.:

% multiple inputs
[a b]   = deal(42,43) % a=2, b=3
[x y z] = deal( zeros(10,1), zeros(10,1), zeros(10,1) )

% vector input
li  = [42 43];
lic = num2cell(li);
[a b]=deal(lic{:}) % unforunately can't do num2cell(li){:}
% a=42, b=43

% matrix input
positions  = zeros(10,3);
% create cell array, one column each
positionsc = mat2cell(positions,10,[1 1 1]);
[x y z]    = deal(positionsc{:})

第一种形式很好(deal(x,y,...))因为它不需要您显式地创建元胞数组。

否则我认为不值得使用deal当您必须将矩阵转换为元胞数组然后再次将它们转换回来时:只需节省开销。无论如何,它仍然需要 3 行:首先定义矩阵(例如li),然后转换为单元格 (lic),然后执行deal (deal(lic{:})).

如果你真的想减少行数,有一个解决方案这个问题 https://stackoverflow.com/questions/2337126/how-do-i-do-multiple-assignment-in-matlab您只需创建自己的函数即可执行此操作,在此处重复并进行修改,以便您可以定义要分割的轴:

function varargout = split(x,axis)
% return matrix elements as separate output arguments
% optionally can specify an axis to split along (1-based).
% example: [a1,a2,a3,a4] = split(1:4)
% example: [x,y,z] = split(zeros(10,3),2)
if nargin < 2
    axis = 2; % split along cols by default
end
dims=num2cell(size(x));
dims{axis}=ones([1 dims{axis}]);
    varargout = mat2cell(x,dims{:});
end

然后像这样使用:

[a b]  = split([41 42])
[x y z]= split(zeros(10,3), 2) % each is a 10x1 vector
[d e]  = split(zeros(2,5), 1)  % each is a 1x5 vector

但它仍然执行矩阵 -> 单元 -> 矩阵的操作。如果你的向量很小并且你没有在循环中执行一百万次,那么你应该没问题。

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

在matlab中将列表拆分为多个变量 的相关文章

  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • Matlab:2行10列的子图

    如何在 matlab 中绘制 20 幅图像 2 行 10 列 我知道我必须使用 子图 功能 但我对给出的参数感到困惑 我尝试给予 子图 2 10 行索引 列索引 但它似乎不起作用 请帮忙 的前两个参数subplot函数分别给出图中子图的总行
  • MATLAB问题:在图块中引用变量的值[重复]

    这个问题在这里已经有答案了 可能的重复 matlab 绘图标题中的变量 https stackoverflow com questions 5629458 matlab variable in plot title 我想在图中引用 m 文件
  • 图像处理方面的空间和时间表征有什么区别?

    我是学习图像处理的初学者 我对空间和时间表征的概念有点困惑 那么 对于空间表征来说 是不是像一张二维地图 包含了一些关于地图的统计信息呢 就时间特征而言 值是相对于时间的吗 这意味着什么以及我们为何关心 谢谢 当您在不同时间拍摄一系列图像时
  • matlab中优先级队列的实现方法

    matlab中有没有提供minpriorityqueue功能的库 import java util PriorityQueue import java util public class MyQueue Comparator
  • 二维随机微分方程 (SDE)

    我第一次研究随机微分方程 我正在寻求模拟和求解二维随机微分方程 模型如下 dp F t p dt G t p dW t where p 是一个 2 1 向量 p theta t phi t F是列向量 F sin theta Psi cos
  • MATLAB 子图标题和轴标签

    我有以下脚本来最终绘制 4 x 2 子图 files getAllFiles preliminaries n size files cases cell 1 n m cell 1 n for i 1 1 n S load files i c
  • GO TO 语句 - Fortran 到 Matlab

    我一直在努力将此网格搜索代码从 Fortran 转换为 Matlab 但是我无法正确合并 GO TO 语句 我正在尝试使用 while 循环 但我认为我需要其他东西来结束搜索 任何帮助将不胜感激 vmax 1 0E 15 amax G 1
  • 使用正常数据直方图与直接公式进行熵估计(matlab)

    假设我们已经绘制了n 10000标准正态分布的样本 现在我想使用直方图计算其熵来计算概率 1 计算概率 例如使用matlab p x hist samples binnumbers area x 2 x 1 sum p p p area b
  • matlab中简单正弦波的傅里叶变换

    我尝试显示简单正弦波的频谱 因为我们知道具有固定频率的单个正弦波必须在其频谱中出现峰值我编写了这段代码 但我无法得到这个峰值我的代码中有什么问题 clc nsteps 200 number of signal elements in tim
  • MATLAB 符号替换

    我知道在 MATLAB 中如果声明了 syms x y f x 2 y 2 grad gradient f 然后grad会存储值 2 x 2 y 如果我想评估梯度 2 2 I use subs f x y 2 2 这返回 4 4 我正在编写
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • 如何使用最小生成树方法将边缘连接到图像中的节点

    我正在做我的手写图像图形匹配项目 我想在图形中表示给定的单词图像 我使用下面的算法 Algorithm input Binary image B Grid width w Grid height h Output Graph g V E w
  • 静态时序数据的数据库解决方案

    我们拥有一个庞大且不断增长的实验数据集 该数据集取自约 30 000 名受试者 对于每个主题 都有多个数据记录 在每个记录中 收集了多个生理数据时间序列 每个时间序列约 90 秒长 并以 250Hz 采样 我应该注意到 时间序列的任何给定实
  • Matlab 的 fftn 在多线程下变得更慢?

    我可以访问 12 核机器和一些严重依赖 fftn 的 matlab 代码 我想加快我的代码速度 由于 fft 可以并行化 我认为更多的内核会有所帮助 但我看到的恰恰相反 这是一个例子 X peaks 1028 ncores feature
  • 如何使用神经网络保存 Sift 特征向量进行分类

    SIFT 特征的 Matlab 实现发现于http www cs ubc ca lowe keypoints http www cs ubc ca lowe keypoints 在 stackoverflow 的帮助下 我想将功能保存到 m
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

    有没有办法在 MATLAB 中打开 pcode 文件 p 如果 开放 是指edit 那么当然不是 pcode 中的 p 代表 受保护 其主要设计目标是在保护其源代码的同时部署功能组件 如果 开放 是指run 那么当然是的 引用手册 http

随机推荐

  • 德尔福有“操纵杆”控件吗?

    我想使用鼠标将对象在 X 和 Y 方向上对齐 将其移动到位 我可以通过使用各种旋转控件 或按钮 来滚动解决方案 但它很混乱 我想知道是否有一个控件 例如操纵杆 可以使用鼠标提供 2 轴控制并以不同的速率触发事件它的地位 Afaik Jedi
  • 静态类的扩展方法? [复制]

    这个问题在这里已经有答案了 我知道我可以执行以下操作来延长课程 我有一个静态类 我想扩展 我可以怎样做呢 我想写ClassName MyFunc static public class SomeName static public int
  • GCC 下缺少返回语句的错误

    如何在 GCC 下生成缺少 return 语句的错误 cpfsfuse c 184 警告 函数中没有 return 语句返回非 void 我能够返回隐式函数声明的错误 Werror implicit function declaration
  • 有没有办法在 Azure 数据工厂中插入带有嵌套数组的文档?

    我正在尝试在 CosmosDb 中添加具有嵌套数组的文档 我正在使用Copy Activity 样本文件 itemNumber D10001 readings value 25 ets 100011111 value 35 ets 1000
  • 您可以将 RolePrincipal 包装在自定义 IPrincipal 对象中吗?

    我在 ASP NET 框架内使用带有表单身份验证的自定义成员资格和角色提供程序 这些效果很好 角色提供者使用 cookie 来保存角色 在每个 Web 请求上保存一次数据库访问 我还在 FormsAuthenticationTicket 中
  • 如何使用 CTCallCenter:setCallEventHandler: 获取应用程序暂停时发生的通话事件?

    CTCallCenter setCallEventHandler 的文档指出 但是 调用事件也可能在您的应用程序运行时发生 暂停 暂停期间 您的申请不会收到 调用事件 当您的应用程序恢复活动状态时 它 为每个更改状态的呼叫接收一个呼叫事件
  • 如何将用户添加到 SQL Server 2008 Management Studio

    我正在尝试安装 DotNetNuke CMS 我在 Microsoft SQL Server Management Studio 2008 中创建了一个数据库 该数据库是在安装 Microsoft Visual Studio 2010 后安
  • 如何为 ollydbg 2.x.x 设置插件? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我从其官方网站下载了最新的ollydbg 2 x版本以及tuts4you的一些插件 但如何启用 安装插件呢 要么将插件 dll 放入专用目录中 例如P
  • 如何在Python 2.7.3版本中提取7z zip文件

    如何在 python 中提取 7z zip 文件 请让我知道是否有任何库可以实现这一点 我已经在 python 2 7 3 版本中安装了 libarchive 库 但我无法使用该库 您可以使用PyLZMA and py7zlib要提取的库7
  • C# 为 DSA 加密算法生成公钥和私钥 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何为 DSA 算法生成字节数组格式
  • 在 Eclipse Ubuntu 中重新索引存储库

    我只是安装 git 存储库并为 eclipse 安装 EGit 插件 当我更改代码并尝试保存时 Eclipse 开始重新索引存储库 然而这个过程永远不会结束 并且日食变得更慢 我只是在网上搜索并尝试应用一些建议的解决方案 但它们不起作用 任
  • CMake 无法在 macOS 上找到 LAPACK sgemm

    我正在尝试编译这段代码 https github com ElmerCSC elmerfem tree wip mac 但是运行时cmake 在构建文件夹中我收到消息 Looking for Fortran sgemm Looking fo
  • PHP 如何使用curl 打开多个源?

    我有一些代码来获取 site1 的 json 内容 但我还需要获取 site2 的内容 我应该为 site2 再次重写所有这些行吗 或者也许我可以在curl setopt ch curl init curl setopt ch CURLOP
  • 如何在react-native中使jwplayer全屏

    我打算在react native中使用jwplayer 截至目前 Github 上还没有可用的 jwplayer React Native 插件 因此我正在开发一个 Native 模块 该模块将在 React Native 中渲染 jwpl
  • SmartPointer:基类和派生类之间的转换

    假设你有一个这样的函数 SmartPtr a doSomething SmartPtr a a 和这样的课程 class A class B public A 现在我这样做 SmartPtr a foo new B doSomething
  • Java 检查点

    我希望我的问题不太模糊 但我正在寻找有关 Java 检查点的更多信息 我必须生成一个大搜索树 我希望能够在程序中断后 例如突然重新启动后等 恢复计算 因此我需要检查点 我发现关于这方面的文档很少 而且我的印象是很多开发在 90 年代中期就停
  • NSArray 对象和铸造

    我有课A有财产NSString name 如果有一个NSArray并添加许多A对象放入此数组中 每次检索对象时是否都需要进行转换 IE NSString n NSString arr objectAtIndex 1 或者有另一种方法可以做到
  • PDFBox:从 ​​PDF 中删除单个字段

    我描述该问题的最简单方法是 我们使用 PDFbox 从 HelloSign 发送给我们的 PDF 中仅删除一个字段 例如信用卡号码 有问题的数据将始终位于最后一页 并且始终位于页面中的相同坐标处 需要从 PDF 中完全删除数据 我们不能简单
  • 将 geom_smooth 与变换后的 y 一起使用

    有没有办法使用geom smooth当 的时候y公式中的变量是否被变换 例如 This works myplot lt qplot speed dist data cars myplot geom smooth method lm form
  • 在matlab中将列表拆分为多个变量

    如果我有一个简短的列表 假设有两个或三个元素 我希望有一个函数可以将其拆分为多个变量 像这样的东西 li 42 43 a b split li gt a 42 gt b 43 我正在寻找一些方法来使我的代码在 matlab 中更短 在某些情