首页 > 其他分享 >Matlab指针

Matlab指针

时间:2023-12-17 11:00:11浏览次数:33  
标签:handle object num Matlab file Filewriter 指针

Matlab指针

第一印象貌似是Matlab中不存在指针,所有变量与函数的赋值都是按值传递的,不会对参数进行修改。其实Matlab提供了handle类作为指针代替品。只要我们利用handle子类,就可以像使用指针一样来操作对象中包含的数据。

handle 类可参考 Matlab Object-Oriented Programming R2012a 第五章中介绍内容。

Matlab Object-Oriented Programming R2012a
ch5. Value or Handle Class
A handle class constructor returns a handle object that is a reference to the object created. You can assign the handle object to multiple variables or pass it to functions without causing MATLAB to make a copy of the original object. A function that modifies a handle object passed as an input argument does not need to return the object.

由上面所述内容可看出,handle类型对象在赋值给其他变量时,不会对原始对象进行复制。此外,在函数中对handle类型对象做修改后,也不需在将其作为返回参数输出。也就是说,在使用handle类型对象时,我们可以认为所操作的就是一个指针,其指向的内容就是构造函数初始化的实例。

实例—Filewriter类

首先给个类的文件Filewriter.m

classdef Filewriter < handle
    properties(SetAccess=private, GetAccess=public)
        num
    end

    methods
    % Construct an object and set num
        function obj = Filewriter(num)
            obj.num = num;
        end

        function addOne(obj)
            obj.num = obj.num +1;
        end
        
    end % methods
end % class

 

我们通过如下语句使用这个自定义的对象:

file = Filewriter(1)

这句代码实现了两个功能,将类实例化了一个对象(object),并将该对象的句柄赋给变量file

毫无疑问,我们调用file.addOne成员函数就可以对变量file自身进行操作。

但是我们还是不放心,假如我调用下面语句,我是将file对象指向地址给了other_file,还是另外为其实例化了一个对象?

other_file = file;

 

用下面方法验证

>> other_file = file
other_file = 

  Filewriter with properties:

    num: 2

>> other_file.addOne
>> file
file = 

  Filewriter with properties:

    num: 3

 

可以看到,通过句柄other_file对实例化的对象进行的操作直接作用在file所指对象上。因此,Matlab 中handle类对象和指针功能是类似的。

标签:handle,object,num,Matlab,file,Filewriter,指针
From: https://www.cnblogs.com/liylllove/p/17908851.html

相关文章

  • G-Rilling EMD HHT Matlab 开源代码
    downpackage_emd/EMDs/cemdc.m , 2354package_emd/EMDs/cemdc2.m , 2362package_emd/EMDs/cemdc2_fix.m , 2312package_emd/EMDs/cemdc_fix.m , 2305package_emd/EMDs/emd.m , 22275package_emd/EMDs/emd_local.m , 9897package_emd/EMDs/emd_online.m , 26315pack......
  • C++: 智能指针的自定义删除器 `Custom Deleter` 有什么用?
    C++11智能指针std::shared_ptr和std::unique_ptr都支持自定义删除器,本文将介绍自定义删除器的使用场景和使用方法。智能指针模板参数的第二个类型是删除器,一般是一个函数指针类型或者是一个函数对象类型。通常情况下,删除器的类型是std::default_delete<T>,它是一个函数对象类型,用于......
  • C++ 高效使用智能指针的8个建议
    C++高效使用智能指针的8个建议前言:智能指针是C++11提供的新特性,它基于RAII实现,可以自动管理内存资源,避免内存泄漏的发生,但是智能指针也并不是万能的,如果不正确使用智能指针,也会导致内存泄漏的发生,因此,我们需要了解如何高效使用智能指针避免一些可能的陷阱。本文总结了8个关于智......
  • 算法学习Day3虚拟头指针,设计链表,反转链表
    Day3虚拟头指针,设计链表,反转链表ByHQWQF2023/12/15笔记203.移除链表元素给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。解法:虚拟头指针看起来非常简单,但是由于如果直接对原始的链表进行操作,如果头节点的v......
  • 双指针算法概念
    "双指针"是一种在数组或链表中使用两个指针来进行操作的技术。这两个指针通常被称为“快”指针和“慢”指针,或者“左”指针和“右”指针,根据其在数据结构中的移动速度或位置来命名。双指针算法在处理数组或链表的问题中非常有效,可以帮助我们以更优的时间复杂度解决问题。常见的应......
  • C++(this指针)
    在C++中,this是一个关键字,表示指向当前对象的指针。它是每个非静态成员函数的一个隐式参数,被用于指向调用该函数的对象。通过this指针,成员函数可以访问调用它的对象的成员变量和成员函数。以下是一个简单的示例,演示了this指针的使用:#include<iostream>classMyClass{......
  • 成员函数指针做回调参数总结 踩坑
    成员函数指针做回调参数总结踩坑一、程序升级后,在linux上编译提示错误:warning:convertingfrom‘int(MyClass::)()’to‘void()()’[-Wpmf-conversions]void(myStoredFunction)(void)=(GENERIC_FUNC_TYPE)memberFunc;//Compilerwarning二、出现这个情况是因为,程......
  • 基于小波神经网络的网络流量预测算法matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022A 3.算法理论概述       网络流量能直接反映网络性能的好坏,网络流量的建模与预测对于大规模网络的规划设计、网络资源管理以及用户行为的调节等方面都具有积极意义。本课题首先介绍了网络流量的特征......
  • 基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览 将FPGA的仿真结果导入到MATLAB,结果如下所示:   2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述      基于FPGA的图像形态学腐蚀算法实现主要依赖于图像处理的基本原理和数学形态学的基础知识。在图像处理中,形态学操......
  • 算法Day2双指针法排序,滑动窗口,螺旋矩阵
    Day2双指针法排序,滑动窗口,螺旋矩阵ByHQWQF2023/12/14笔记977.有序数组的平方https://leetcode.cn/problems/squares-of-a-sorted-array/返回一个非递减顺序排序的整数数组每个元素的平方后组成的新数组,新数组也按非递减顺序排序。解法:双指针法由于给定数组本身是有序的,......