matlab - 无法设置Matlab类的参数

标签 matlab class oop set

我创建了(第一个)Matlab 类来存储图像序列。

当我将方法应用于类的实例时,根本没有设置类的属性。

classdef sequence

    %% Properties %%

    properties
        images;
        width;
        height;
    end

    %% Methods %%

    methods

        %% Constuctor %%

        function obj = sequence()
            obj.images = {};
            obj.width = -1;
            obj.height = -1;
        end

        %% Others methods %%

        function numberOfImages = getNumberOfImages(obj)
           numberOfImages = length(obj.images); 
        end

        function addImage(obj, imageToAdd)

            numberOfImages = obj.getNumberOfImages();

            obj.images{numberOfImages + 1} = imageToAdd;

            if numberOfImages == 0
                [h, w] = size(imageToAdd);

                obj.height = h;
                obj.width = w;
            end

        end

        function image = getImage(obj, i)
           image = obj.images{i}; 
        end

    end

end

我仔细按照Matworks文档,但我仍然不知道我的错误在哪里。

这是我为使用我的类而编写的代码:

%% Parameters %%

imageFilename1 = '../Data/Test/1.png';
imageFilename2 = '../Data/Test/2.png';

alpha = 50;
numberOfIterations = 50;

%% Read images %%

image1 = double(imread(imageFilename1));
image2 = double(imread(imageFilename2));

imageSequence = sequence();
imageSequence.addImage(image1);
imageSequence.addImage(image2);

我哪里错了?

最佳答案

您正在使用值类,因此对参数的更改不会更改实际对象。为了使其正常工作,您应该将第一行更改为:

classdef sequence < handle

这样就创建了一个handle类,你想怎么用就怎么用。

有关更多信息,您可以查看 this page

关于matlab - 无法设置Matlab类的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422591/

相关文章:

matlab - 如何在 MATLAB 中实现普查变换

python - 如何生成仅包含 1's and 0' s 的 14x10 矩阵的所有可能组合

language-agnostic - 在OOP上下文中正确登录

matlab - 在Matlab中反转soundsc

c++ - Eigen 的 MATLAB find()/Numpy 非零习语

.net - 将 Windows 服务类添加到类库

ruby - 使用 `===`(包含运算符)比较类

c++ - 有没有办法在非模板类中定义模板成员?

javascript - 在对象函数中定义 getter/setter

python - 无法在python中访问基类中的父类成员