【问题标题】:Can not set parameter of Matlab classMatlab类的参数不能设置
【发布时间】:2015-02-09 22:07:02
【问题描述】:

我创建了一个(第一个)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);

我哪里错了?

【问题讨论】:

    标签: matlab class oop set


    【解决方案1】:

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

    classdef sequence < handle
    

    这样你就创建了一个句柄类,可以随意使用。

    更多信息您可以查看this page

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 2013-06-17
      • 2014-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多