当我使用MATLAB时,有时我觉得需要对一些变量进行注释。 我想将这些注释保存在这些变量中。 因此,当我不得不在工作空间中使用许多变量,而又忘记了其中一些变量的上下文时,我可以阅读我在每个变量中添加的注释。 因此,我想注释变量并将注释保留在变量内。

#1楼 票数:4 已采纳

虽然我认为最好的(和最简单的)办法是给他们描述性的名称,让您的变量自我记录的,实际上为你做你想要使用的是什么MATLAB的面向对象的方面的方式。 具体来说,您可以创建一个新类,该新类将内置类作为子类,以便它具有描述变量的附加属性。

实际上, 文档中有一个示例可以完全满足您的要求。 它创建一个行为类似于double的新类ExtendDouble ,不同之处在于它具有附加的DataString属性,该属性描述了变量中的数据。 使用此子类,您可以执行以下操作:

N = ExtendDouble(10,'The number of data points')
N = 
The number of data points
     10

N可以在表达式中使用,就像任何double值一样。 使用该示例子类作为模板,可以创建其他内置数字类的“注释”版本, 但不允许子类charcellstructfunction_handle )除外。

当然,应该注意的是, ExtendDouble像上例中那样使用ExtendDouble类, ExtendDouble像这样定义变量:

nDataPoints = 10;

这使得变量可以自我记录,尽管需要更多键入。 ;)

#2楼 票数:1

为您的评论声明另一个变量如何?
例:

\>> num = 5;  
\>> numc = 'This is a number that contains 5';  
\>> whos  
...

这是我在StackOverflow中的第一篇文章。 谢谢。

#3楼 票数:1

解决此问题的一种简便方法是拥有一个为您存储和显示评论的函数,即类似于下面的函数,如果您使用comments('myVar')进行调用,它将弹出一个对话框。为标记为myVar变量(或函数或同事)输入新的(或读取/更新先前的)注释。

请注意,注释将在您的下一个Matlab会话中不可用。 为此,您必须在comments添加保存/加载功能(即,每次更改任何内容时,都会写入文件,并且每次启动该功能且database为空时,如果可能,都将加载文件)。

function comments(name)
%COMMENTS stores comments for a matlab session
% 
% comments(name) adds or updates a comment stored with the label "name"
%
% comments prints all the current comments

%# database is a n-by-2 cell array with {label, comment}
persistent database

%# check input and decide what to do
if nargin < 1 || isempty(name)
    printDatabase;
else
    updateDatabase;
end

    function printDatabase
        %# prints the database
        if isempty(database)
            fprintf('no comments stored yet\n')
        else
            for i=1:size(database,1)
                fprintf('%20s : %s\n',database{i,1},database{i,2});
            end
        end
    end
    function updateDatabase
        %# updates the database

        %# check whether there is already a comment 
        if size(database,1) > 0 && any(strcmp(name,database(:,1)))
            idx = strcmp(name,database(:,1));
            comment = database(idx,2);
        else
            idx = size(database,1)+1;
            comment = {''};
        end

        %# ask for new/updated comment
        comment = inputdlg(sprintf('please enter comment for %s',name),'add comment',...
            5,comment);

        if ~isempty(comment)
            database{idx,1} = name;
            database(idx,2) = comment;
        end
    end
end

#4楼 票数:1

始终始终保持Matlab编辑器处于打开状态,并带有记录您所做操作的脚本。 也就是说,变量分配和计算。

只有例外是您要尝试的非常短的会话。 拥有内容后-将其添加到文件中(查看完整的历史记录也更容易剪切和粘贴)。

这样,您可以始终重新开始。 只需clear all并重新运行脚本即可。 您的工作空间中永远不会有随机的临时对象。

最终,完成后,您还将获得一些接近“可交付成果”的东西。

#5楼 票数:0

您是否考虑过使用结构(或单元,尽管结构将需要额外的内存使用)?

'>> dataset1.numerical = 5;

'>> dataset1.comment ='这是包含5的数据集';

 dataset1 = 
   numerical: 5
   comment: 'This is the dataset that contains 5'

  ask by Peterstone translate from so

未解决问题?本站智能推荐:

1回复

在函数中保存变量?(MATLAB)

我有一个类似这样的函数: 函数 [] = 函数 1 -变量1=值1; -变量2=值2; -matrix1=[] -matrix2=[] - 填充矩阵 1 和矩阵 2 的循环 -更多声明 -final function1 结束 function2[] 从函数 1 中获取值并执行操作,创建新变量
2回复

变量未在MATLAB工作区中显示

变量不时地停止显示在“工作区”窗格中。 who和whos表明,有一定的变量工作区-我看不出他们在工作区窗格中。 只有重新启动MATLAB才能解决此问题。 为什么会这样呢?
2回复

Matlab中变量的符号声明

我想将我的变量写为其他变量之间的操作。 例如,如果我放置a = c + b则a保留在其中的值是c与b之间的和运算的数值结果。 如果c = 4且b = 2,则a保持的值为6。 但是我希望a保留符号表达式而不是数字值。 每次我在命令窗口中编写a时,matlab都会将worspace变量
1回复

像在MATLAB中一样在python中查看Workspace变量

我正试图从MATLAB转向Python来进行我的研究工作。 我试图找出是否有任何方法可以在执行时查看Workspace变量(如图中的红框所示: http : //postimg.org/image/4wp5qzkuj/ ),就像MATLAB在Python中所做的那样。 我正在使用Spyder
1回复

如何在Matlab中查看工作空间变量的全部内容?

我在使用Matlab查看工作区变量时遇到问题。 具体来说,我有一个尺寸为1x81的单元格数组。 Matlab将只显示此单元格数组的前16个元素,并且当我单击工作区部分中的变量时,我希望能够查看所有这些元素。 我试过寻找一个设置来控制变量在工作区中的显示方式,但没有找到解决这个特定问题的运
1回复

Simulink和MATLAB-何时使用工作空间变量vsinport/outport

我是使用Simulink的新手,并且已经创建了一些具有大约五个输入和五个输出的模型/库。 据我所知,我可以从工作区读取一个变量并将其写入我的库中的工作区,或者我可以使用inports和outport来完成同样的事情。 一种方法通常比另一种更好吗? 我假设每个都有它的优点和缺点,但我还没有
2回复

Matlab在函数中使用工作区变量

由于某些原因,我需要在函数中使用工作区变量。 如何将这些变量“导入”到函数中? 谢谢
1回复

使用变量在MatLab函数中更改工作区中的名称

所以我使用的是一个名为cpselect(图像处理工具箱)的函数,它基本上返回了图像中我想要的点的像素值(x,y)。 然后将像素值作为变量保存在工作空间中。 所以我有两个问题: 1)我需要在功能中使用这些变量。 我有几个图像,在使用cpselect后,我在工作区中得到fixedPoint