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类对象和指针功能是类似的。

Matlab指针的更多相关文章

  1. Matlab指针数组

    Matlab指针数组 前面博客Matlab指针中介绍了如何在Matlab中使用handle类型对象作为指针使用,本文则介绍一些使用这些类型指针的小技巧. 自定义类型的指针数组 在大部分编程语言中,我们 ...

  2. Matlab高级教程_第三篇:Matlab转码C/C++方式(混编)_第一部分

    0. 其实Matlab的转码混编大多数就是为了现成的算法函数不用再写了,2就是为了方便提高代码运行速度用C语言去运行. 1. MEX文件: Mex文件是一种可在matlab环境中嗲用C语言(或fort ...

  3. matlab中imread 从图形文件读取图像

    来源:https://ww2.mathworks.cn/help/matlab/ref/imread.html?searchHighlight=imread&s_tid=doc_srchtit ...

  4. 动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题

    动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题 D3 ...

  5. 图像处理中任意核卷积(matlab中conv2函数)的快速实现。

    卷积其实是图像处理中最基本的操作,我们常见的一些算法比如:均值模糊.高斯模糊.锐化.Sobel.拉普拉斯.prewitt边缘检测等等一些和领域相关的算法,都可以通过卷积算法实现.只不过由于这些算法的卷 ...

  6. Matlab && C-Mex Round 1

    前言:本篇文章主要通过一个简单的例子程序对C-Mex进行一个初步的说明.前期的环境搭建(包括安装Matlab和gcc编译器)就不在这里赘述了. 在看文章之前,建议初学者先检查一下Matlab的mex配 ...

  7. Matlab的部分文件操作

    Author:Maddock Date:2015-01-20 判断文件是否存在 infilename = [str,'\lena.jpg']; sgc_exist = exist(infilename ...

  8. matlab GUI界面编程总结

    去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...

  9. Matlab编程基础

    平台:Win7 64 bit,Matlab R2014a(8.3) “Matlab”是“Matrix Laboratory” 的缩写,中文“矩阵实验室”,是强大的数学工具.本文侧重于Matlab的编程 ...

随机推荐

  1. AIApe问答机器人项目Scrum Meeting博客汇总

    荡起双桨 Scrum Meeting 博客汇总 一.Alpha阶段 AIApe问答机器人Scrum Meeting 4.23 AIApe问答机器人Scrum Meeting 4.25 AIApe问答机 ...

  2. 【二食堂】Beta - Scrum Meeting 8

    Scrum Meeting 8 例会时间:5.22 20:00~20:10 进度情况 组员 当前进度 今日任务 李健 1. UI优化已经完成,顺带修复了一点小bug.issue 1. 文本导入.保存部 ...

  3. Noip模拟70 2021.10.6

    T1 暴雨 放在第一道的神仙题,不同的做法,吊人有的都在用线段树维护$set$预处理 我是直接$dp$的,可能代码的复杂度比那种的稍微小一点 设$f[i][j][p][0/1]$表示考虑了前$i$列, ...

  4. (转)linux下execl和system函数

    linux下,system函数和execl函数都是用于执行一条系统命令.今天仔细看了system函数的实现,想找出和execl函数的差别. 这里先进行一些背景知识补充: fork(创建一个新的进程): ...

  5. Python3 装逼神器---词云(wordcloud)

    词云 (Word Cloud)是对文本中出现频率较高的词语给予视觉化展示的图形, 是一种常见的文本挖掘的方法. 实例:     依赖包: # pip3 install wordcloud  jieba ...

  6. Docker配置tomcat端口映射后无法访问(404)

    1.配置tomcat端口映射 2.访问测试 3.修改webapps文件,webapps.dist是所需文件 4.虚拟机中重新访问 5.在主机也能访问成功(注意路径为虚拟机IP,不是localhost)

  7. SSH 信任关系建立

    需求hostA通过ssh登陆到hostB,实现免密登陆,以及SCP的免密传送文件 由于hostA要登陆到hostB 首先需要在hostA上生成密钥,使用以下命令 ssh-keygen -t rsa 按 ...

  8. Java8新特性之方法引用&Stream流

    Java8新特性 方法引用 前言 什么是函数式接口 只包含一个抽象方法的接口,称为函数式接口. 可以通过 Lambda 表达式来创建该接口的对象.(若 Lambda 表达式抛出一个受检异常(即:非运行 ...

  9. 『学了就忘』Linux基础命令 — 39、挂载U盘和挂载NTFS分区

    目录 1.在Linux系统中挂载U盘 (1)插入U盘 (2)查询U盘设备文件名 (3)挂载U盘 (4)U盘中的中文乱码 (5)U盘卸载 2.在Linux系统中挂载NTFS分区 (1)Linux的驱动加 ...

  10. Part 11 to 20 Basic in C# continue

    Part 11-12 switch statement in C# switch statement break statement   if break statement is used insi ...