我创建了一个包含在git存储库中的文件的默认版本.重要的是,当某人克隆存储库时,他们会获得此文件的副本.但是,我想设置git,以便稍后忽略对此文件的更改. .gitignore仅适用于未跟踪的文件.
我的动机是这个文件包含机器特定的信息.我想提供默认值,同时允许人们进行不会被推回原始存储库的本地更改,从而在我们提取新更改时创建合并冲突.
我们通常非常懒惰并且使用git add .很多,所以我很确定如果我不能告诉git忽略这个文件,对它的更改将最终得到提交和推送.
总结一下,
default_values.txt添加到我的git存储库,并在有人克隆该存储库时包含该文件.git add .不应该添加default_values.txt到提交.如果我声明一个对象是句柄classdef的子类obj <handle我的对象现在基本上是某个某处内存的"指针".如何找出对象耗尽的内存量?
例如,假设我有一个带字段栏的类foo
classdef foo < handle
properties
bar = randn(1000);
end
Run Code Online (Sandbox Code Playgroud)
bar需要8兆字节(8字节*100万个数字)
但如果我输入
obj = foo();
whos('obj');
Run Code Online (Sandbox Code Playgroud)
我明白了
Name Size Bytes Class Attributes
obj 1x1 60 foo
Run Code Online (Sandbox Code Playgroud)
我如何找出obj指向的总内存量?
我有一个需要很长时间才能运行的功能.当我对它进行分析时,我发现超过一半的时间(50秒中的26个)没有计入逐行时序故障,我可以证明在函数完成运行之后但在它返回控制之前花费的时间通过以下方法:
ts1 = tic;
disp ('calling function');
functionCall(args);
disp (['control returned to caller - ', num2str(toc(ts1))]);
Run Code Online (Sandbox Code Playgroud)
我调用的函数的第一行是ts2 = tic,最后一行是
disp (['last line of function- ', num2str(toc(ts2))]);
Run Code Online (Sandbox Code Playgroud)
结果是
调用功能
最后一行功能 - 24.0043
控制权返回给来电者 - 49.857
在互联网上闲聊,我认为这是MATLAB管理内存的方式的症状.它在函数返回时释放,有时这需要很长时间.该函数确实分配了一些大的(~1百万个元素)数组.它也适用于句柄,但不会显式创建任何新的句柄对象或存储句柄.我的问题是:
想象一下,我有一个热狗的二维图像.我可以在两端的热狗上划一条直线.称之为中线.它的一个特性是它是(2D)热狗具有最低惯性矩的轴.
现在,如果我将热狗弯成弧形,这条中线也会扭曲.
鉴于弯曲的热狗的图片,我如何确定这个弯曲的中线?该算法应该容忍图像中适量的噪声.
例如,大多数MATLAB绘图命令允许您指定要作用的轴
plot (x,y)
Run Code Online (Sandbox Code Playgroud)
在当前轴上绘制,但是
plot(Ax, x, y)
Run Code Online (Sandbox Code Playgroud)
将在Ax轴上绘制.
同样,您可以标记非活动轴的x轴或y轴
xlabel(Ax, 'this label goes on the x-axis of Ax whether or not Ax == gca')
Run Code Online (Sandbox Code Playgroud)
但text命令似乎不支持此功能.有没有办法将文本放入非活动轴?
我问因为这个顺序:
currentAxes = gca;
axes(Ax); %MLINT warning here
text(x,y,'this text ends up on axes Ax now');
axes(currentAxes); %MLINT warning here
Run Code Online (Sandbox Code Playgroud)
将抛出MLINT警告,在脚本函数中调用轴(axes_handle)很慢.
我正在使用指南在matlab中创建GUI.它是非阻塞的(不是呼叫uiwait).当gui窗口关闭时,我想执行一些清理代码.
是否有一个gui_ClosingFcn回调我应该类似于gui_OpeningFcn指南为我创建的模板定义?
在许多MATLAB绘图功能中,您可以将颜色指定为字符串或直接列出红色,绿色和蓝色值的3元素矢量.
例如,这两个陈述是等价的:
plot(x, y, 'Color', 'r');
plot(x, y, 'Color', [1 0 0]);
Run Code Online (Sandbox Code Playgroud)
有8种颜色可以用字符串值指定:'r','g','b','c','m','y','k','w'.是否有MATLAB内置函数将这些字符串转换为等效的RGB矢量?
假设我在类文件中定义了MATLAB对象
classdef foo
properties
bar
end
end
Run Code Online (Sandbox Code Playgroud)
我创建了一个foo对象
myfoo = foo();
Run Code Online (Sandbox Code Playgroud)
现在我想动态地向foo添加另一个字段.我想要的是
myfoo.newfield = 42;
Run Code Online (Sandbox Code Playgroud)
但这会引发错误.
我知道有一种方法可以动态地将字段/属性添加到MATLAB对象中,但我无法记住它或在帮助中轻松找到它.有谁知道语法?
我对访问一个字段的一般问题很感兴趣,该字段可能埋藏在包含结构中的任意数量的级别.下面是使用两个级别的具体示例.
假设我有一个结构toplevel,我在MATLAB命令行中定义了以下结构:
midlevel.bottomlevel = 'foo';
toplevel.midlevel = midlevel;
Run Code Online (Sandbox Code Playgroud)
我可以midlevel通过将字段名称作为字符串传递来访问结构,例如:
fieldnameToAccess = 'midlevel';
value = toplevel.(fieldnameToAccess);
Run Code Online (Sandbox Code Playgroud)
但我无法bottomlevel以相同的方式访问结构 - 以下是无效的语法:
fieldnameToAccess = 'midlevel.bottomlevel';
value = toplevel.(fieldnameToAccess); %# throws ??? Reference to non-existent field 'midlevel.bottomlevel'
Run Code Online (Sandbox Code Playgroud)
我可以编写一个fieldnameToAccess查看句点的函数,然后递归迭代以获得所需的字段,但我想知道是否有一些聪明的方法来使用MATLAB内置函数来直接获取字段值.
如果我有一组数据Y和一组以X为中心的箱子,我可以使用HIST命令查找每个箱子中每个Y的数量.
N = hist(Y,X)
Run Code Online (Sandbox Code Playgroud)
我想知道的是,如果有内置函数可以告诉我每个Y进入哪个bin,那么
[N,I] = histMod(Y,X)
Run Code Online (Sandbox Code Playgroud)
意味着Y(I == 1)将返回bin 1中的所有Y,等等.
我知道如何编写这个函数,所以我只是想知道MATLAB中是否已经内置了这个函数.