我可以阻止 MATLAB 动态调整预分配数组的大小吗?

2023-12-30

例如,在这个简单/愚蠢的例子中:

n = 3;
x = zeros(n, 1);
for ix=1:4
    x(ix) = ix;
end

该数组是预先分配的,但在循环中动态调整大小。 MATLAB 中是否有一个设置会在发生此类动态调整大小时引发错误?在这个例子中我可以简单地重写它:

n = 3;
x = zeros(n, 1);
for ix=1:4
    if ix > n
        error('Size:Dynamic', 'Dynamic resizing will occur.')
    end
    x(ix) = ix;
end

但我希望用它作为检查,以确保我已经正确地预先分配了我的矩阵。


您可以创建一个子类double并限制分配subsasgn method:

classdef dbl < double
    methods
        function obj = dbl(d)
            obj = obj@double(d);
        end

        function obj = subsasgn(obj,s,val)
            if strcmp(s.type, '()')
                mx = cellfun(@max, s.subs).*~strcmp(s.subs, ':');
                sz = size(obj);
                nx = numel(mx);
                if nx < numel(sz)
                    sz = [sz(1:nx-1) prod(sz(nx:end))];
                end
                assert(all( mx <= sz), ...
                    'Index exceeds matrix dimensions.');
            end
            obj = subsasgn@double(obj, s, val);
        end

    end
end

所以现在当你预分配使用时dbl

>> z = dbl(zeros(3))
z = 
  dbl

  double data:
     0     0     0
     0     0     0
     0     0     0
  Methods, Superclasses

所有方法用于double现在继承于dbl你可以照常使用它,直到你将一些东西分配给z

>> z(1:2,2:3) = 6
z = 
  dbl

  double data:
     0     6     6
     0     6     6
     0     0     0
  Methods, Superclasses

>> z(1:2,2:5) = 6
Error using dbl/subsasgn (line 9)
Index exceeds matrix dimensions.

我还没有对其进行基准测试,但我预计这对性能影响不大。

如果您希望值的显示看起来正常,您可以重载display方法还有:

function display(obj)
    display(double(obj));
end

Then

>> z = dbl(zeros(3))
ans =
     0     0     0
     0     0     0
     0     0     0
>> z(1:2,2:3) = 6
ans =
     0     6     6
     0     6     6
     0     0     0
>> z(1:2,2:5) = 6
Error using dbl/subsasgn (line 9)
Index exceeds matrix dimensions.
>> class(z)
ans =
dbl
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以阻止 MATLAB 动态调整预分配数组的大小吗? 的相关文章

  • MATLAB 中时间戳过滤器的优化 - 处理非常大的数据集

    我正在 MATLAB 中编写一个程序 必须使用 MATLAB 并且不能真正使用 MEX 来过滤大量数据 我需要实现的过滤器之一要求我将时间戳向量与其他时间戳不会出现的已知 不良 时间列表进行比较 一个典型的时间戳向量有大约 2 000 00
  • 检查Matlab中脚本需要使用的函数

    我有一个别人写的代码包 我正在运行一个脚本 它调用一些函数 这些函数又调用更多函数 等等 我想获取不是 MATLAB 内置函数但属于包的一部分的函数列表 我尝试使用matlab codetools requiredFilesAndProdu
  • Matlab - 如果值包含xxx,则删除元胞数组中的行

    在 Matlab 中 如何删除包含变量字符串的元胞数组中的元胞 假设我的元胞数组是 C svnTrunk RadarLib radarlb utilities scatteredInterpolant m C svnTrunk RadarL
  • 如何在 Matlab 中使用谷歌翻译?

    我正在编写一个程序 使用 Matlab 列出电影字幕文件中的所有唯一单词 现在我有一个独特的单词列表 我想将其翻译成我的语言并在观看电影之前了解其含义 有谁知道如何在 Matlab 中使用 Google Translate 以便完成我的脚本
  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • MATLAB 中的多个捕获组

    我有一个包含数字或字母的字符串a 可能紧随其后的是r or l 在 MATLAB 中 以下正则表达式返回为 gt gt regexp 10r 0 9 a l r match ans 10r 我希望10 and r分开 因为我有两个捕获组 有
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • 句柄类和值类的区别

    我有一些 C 背景 想使用 Matlab 中的类 句柄和值类有什么区别 我知道如果我想定义一个带有重载运算符 例如 和 的矩阵类 我会使用值类 然而 有时 当我选择一个手柄类时 事情似乎只对我有用 MathWorks 提供了一些有关其用途的
  • Matlab:保存后翻转图例顺序和图例重叠图

    我正在尝试根据以下内容反转我的图例条目顺序matlab条形图中图例颜色的逆序 https stackoverflow com questions 31178005 reverse ordering of legend colors in m
  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 如何在 Matlab 中对数组应用低通或高通滤波器?

    有没有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组 我对 MATLAB 的强大功能 或数学的复杂性 有点不知所措 需要一个简单的函数或一些指导 因为我无法从文档或网络搜索中找到答案 看着那 这filter http w
  • MATLAB 特征函数

    我很好奇哪里可以找到完整的描述FEATURE功能 它接受哪些论点 没有找到文档 我只听说过memstats and getpid 还要别的吗 gt gt which feature built in undocumented 注意 更完整的
  • 如何在 Matlab 中将数组打印到 .txt 文件?

    我才刚刚开始学习Matlab 所以这个问题可能非常基本 我有一个变量 a 2 3 3 422 6 121 9 4 55 我希望将值输出到 txt 文件 如下所示 2 3 3 422 6 121 9 4 55 我怎样才能做到这一点 fid f
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • @(t)在Matlab中是什么意思? [复制]

    这个问题在这里已经有答案了 正如标题所示 考虑到下面的上下文 t 在 Matlab 中到底意味着什么 computeNumericalGradient 是一个函数 cofiCostFunc 也是一个接受一堆参数的函数 问题是 t 对 cof
  • 对数据进行分布拟合 - MATLAB

    我正在尝试对从显微镜图像中收集的一些数据进行分布 我们知道 152 左右的峰值是由于泊松过程造成的 我想将分布拟合到图像中心的大密度 同时忽略高强度数据 我知道如何将正态分布拟合到数据 红色曲线 但它不能很好地捕获右侧的重尾 尽管泊松分布应
  • 如何在MATLAB中显示由三个矩阵表示的图像?

    我有 3 个相同大小的 2D 矩阵 假设 200 行和 300 列 每个矩阵代表三种 基本 颜色 红色 绿色和蓝色 之一的值 矩阵的值可以在 0 到 255 之间 现在我想组合这些矩阵以将它们显示为彩色图像 200 x 300 像素 我怎样
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB

随机推荐

  • nhibernate动态绑定一个类

    我读了本文 http www mattfreeman co uk 2009 01 nhibernate 21 trunk entity name some inheritance and dynamic component 并且正在寻找一种
  • 使用正文启动消息传递应用程序

    我有这个代码来打开消息 我想添加正文 Intent i6 new Intent Intent ACTION VIEW Uri parse sms 9986377561 startActivity i6 添加正文 正文 测试文本 Intent
  • 在 ToString() 之前检查 null

    这是场景 if entry Properties something Value null attribs something entry Properties something Value ToString 虽然有效且工作正常 但对我来
  • 迁移期间未找到实体框架外键

    在将键和外键添加到数据模型后设置迁移时 我遇到意外错误 我使用的是 VS2013 Express 带有 NET Framework 4 5 为实体框架创建数据模型时 由于类之间的关系键不是惯例所期望的 因此我使用数据注释 如微软数据开发中心
  • 我应该将 Javascript 放在 HTML 文件的头部还是正文中?

    我正在制作一个搜索引擎 当用户访问我的页面时 我有将 http 重定向到 https 的代码 但我不确定是否应该将其放在页面的 head 或 body 部分 这是我所得到的 if window location protocol https
  • 活动和片段生命周期以及方向变化

    我一直遇到很奇怪的问题Fragments导致强制关闭且不遵循逻辑模式的方向变化 我创建了一个简单的Activity and Fragment生命周期调试应用程序 它简单地实现了活动生命周期 http developer android co
  • java.lang.IllegalArgumentException:未找到命名查询。(实体管理器未创建 NamedQuery)

    我正在使用 hibernate 4 1 5 Final 和 Spring 3 1 2 Release 和 Jboss 7 1 我已在带有 NamedQuery 注释的类中编写了所有命名查询 但实体管理器未创建命名查询 我正在发布 stack
  • 如何使用 Google 应用签名为 Sms Retriever 生成 11 个字符的哈希密钥

    我使用以下命令生成了 11 个字符的哈希值AppSignatureHelper班级 但是将 apk 上传到 Play 商店后 它们的哈希值就不再起作用了 我发现 Play 将密钥替换为另一个密钥 这就是哈希值也发生更改的原因 现在我在获取
  • jQuery UI 中的disableSelection 有何用途?

    有人可以帮助我理解为什么它有用以及何时使用它 sortable disableSelection 如果您想让文本变得不可选择 它会很有用 例如 如果您想要制作带有文本的拖放元素 那么在尝试拖动框时 如果框上的文本意外被选中 那么用户会很烦恼
  • 如何使用javascript打开一个文件夹并列出其中的html文件名?

    我想使用 JavaScript 在浏览器中 列出特定文件夹中 HTML 文件的名称 有人可以帮我吗 谢谢 如果您使用在浏览器中运行的 Javascript 则无法 打开文件夹 您必须通过某种数据结构或通过解析服务器生成的 HTML 文件夹索
  • 使用 Google Analytics 跟踪 Google 表单提交情况

    我正在使用 Google Forms 一个 Google 文档电子表格 其中包含自动生成的表单 用户可以填写该表单来提交其详细信息 并且希望在 Google Analytics 分析 中以虚拟综合浏览量的形式跟踪表单的提交 以便我可以衡量转
  • 是否可以从网页打开新的 Lync 对话?

    我想在用户 Lync 客户端中打开一个新对话 其中包含预先确定的消息文本 但消息的收件人由用户选择 此过程从用户单击网站上的链接开始 那可能吗 这里的部分问题是 如果不知道要与谁开始对话 如果有意义的话 则无法打开对话窗口 从网页上 您可以
  • 如何在 Dymola 中隐藏模拟变量

    模拟模型后是否可以隐藏对象或输出 我有很多东西 我觉得我在浪费时间筛选它们试图找到我的正确答案 如果没有 有没有办法组织我的输出在模拟选项卡中的显示方式 Thanks Dymola 的主要可能性是 使组件受到保护 默认情况下 受保护的组件不
  • Tensorflow - 多 GPU 不适用于模型(输入),也不适用于计算梯度

    当使用多个GPU对模型进行推理 例如调用方法 model inputs 并计算其梯度时 机器只使用一个GPU 其余的GPU闲置 例如下面的代码片段 import tensorflow as tf import numpy as np imp
  • 在VHDL中初始化记录数组

    我有一条记录定义如下 type ifx t is record data std logic vector 127 downto 0 address std logic vector 19 downto 0 WrReq std logic
  • SQL Server HASHBYTES SHA2_512 和 C#

    如果我在 SQL Server 中运行以下命令 SELECT HASHBYTES SHA2 512 THE CAT SAT ON THE MAT 然后在 C 中运行 string test WordFunctions SHA512 THE
  • 无法加载文件或程序集“log4net”或其依赖项之一

    我正在尝试创建一个水晶报告 并且我是该领域的新手 我创建了一份水晶报告这篇教程文章 http myvsdotnetstuff blogspot com 2011 03 simple report using crystal reportin
  • 在 Python 描述符中创建动态文档字符串

    我正在尝试动态生成一些类定义 用于包装 C 扩展 下面的描述符工作正常 除了当我尝试使用 help 访问字段的文档字符串时 它提供描述符的默认文档而不是字段本身 但是 当我执行 help classname 时 它会检索传递给描述符的文档字
  • Android 2.3 Stock 浏览器:内联块未在“orientationchange”事件上扩展

    目前 当涉及到 android 2 3 上的方向变化时 我的网站遇到了一个有趣的问题 它严格适用于移动设备 对 Android 2 3 原生浏览器有必要的支持 见下文 HTML div div div div div div CSS wra
  • 我可以阻止 MATLAB 动态调整预分配数组的大小吗?

    例如 在这个简单 愚蠢的例子中 n 3 x zeros n 1 for ix 1 4 x ix ix end 该数组是预先分配的 但在循环中动态调整大小 MATLAB 中是否有一个设置会在发生此类动态调整大小时引发错误 在这个例子中我可以简