例如,如果我想从中读取中间值magic(5)
,我可以这样做:
M = magic(5);
value = M(3,3);
Run Code Online (Sandbox Code Playgroud)
得到value == 13
.我希望能够做到这样的事情之一:
value = magic(5)(3,3);
value = (magic(5))(3,3);
Run Code Online (Sandbox Code Playgroud)
免除中间变量.然而,MATLAB抱怨Unbalanced or unexpected parenthesis or bracket
在第一个括号之前3
.
是否可以在不首先将其分配给变量的情况下从数组/矩阵中读取值?
我正在努力加快我的基准测试(3层Web架构),并且我有一些与Memcache(d)和Varnish相关的一般性问题.
有什么不同?
在我看来,Varnish是Web服务器的后面,缓存网页,不需要更改代码,只需要配置.
另一方面,Memcached是通用缓存系统,主要用于缓存数据库的结果,并且需要更改get
方法(第一次缓存查找).
我可以同时使用吗?前面的Web服务器和Memcached中的Varnish用于数据库缓存?
什么是更好的选择?
(方案1 - 主要是写,
方案2 - 主要是读取,
方案3 - 读取和写入类似)
场景
想象一下,我被迫使用一些总是存储在.zip
文件中的文件.zip中的一些文件是小文本文件并经常更改,而其他文件更大但幸运的是相当静态(例如图像).
如果我想将这些zip文件放在git
存储库中,每个zip都被视为一个blob,所以每当我提交存储库时,就会增加zip文件的大小...即使只有一个小文本文件在里面改变了!
为什么这是现实的
MS Word 2007/2010 .docx
和Excel .xlsx
文件是ZIP文件...
我想要的是
是否有任何机会告诉git
不要将拉链视为文件,而是作为目录并将其内容视为文件?
优点
但是,它说不行吗?
我意识到如果没有额外的元数据,这将导致一些歧义:在git checkout
git上必须决定是foo.zip/bar.txt
在常规目录还是zip文件中创建文件.但是,我认为这可以通过配置选项解决.
两个想法如何完成(如果它还不存在)
minizip
或者IO::Compress::Zip
在git里面有时我会启动一个MATLAB脚本并意识到太晚了,它会输出太多的数字.最终我得到了一个
线程"AWT-EventQueue-0"中的异常java.lang.OutOfMemoryError:Java堆空间
这可以很容易地在我的机器上使用
for i=1:inf
figure;
end
Run Code Online (Sandbox Code Playgroud)
在使用128 MB Java堆的标准设置(首选项/ Java堆内存)崩溃之前,我得到大约90个数字,而将堆加倍到256 MB则给出了大约200个数字.
您是否看到了避免 Java错误消息的方法?如果没有足够的内存供另一个人使用,我希望我的脚本能够被告知而不是崩溃.
也许我可以有一个包装器figure
(以某种方式?)检查有多少Java堆可用,如果没有足够的空间,它会拒绝打开一个新的数字?
更新
使用下面的答案,我得到了一个很好的图表,说明Memory Java有多少可用内容:
这是使用
for i=1:inf
java.lang.Runtime.getRuntime.gc
fprintf('%3.0f: %1.0f Byte free\n',i,java.lang.Runtime.getRuntime.freeMemory);
figure;
end
Run Code Online (Sandbox Code Playgroud)
我假设开头的增加意味着垃圾收集每次调用它时只会做一些努力吗?
更新2 - 我的解决方案
使用我在这里获得的帮助,我实现了以下解决方案作为figure.m
重载并调用内置figure
命令:
function varargout=figure(varargin)
memcutoff = 10E6; % keep at least this amount of bytes free
memkeyboard= 3E6; % if memory drops below this, interrupt execution and go to keyboard mode
global refuse_new_figures
if refuse_new_figures
warning('jb:fig:lowjavamem2','Java WAS …
Run Code Online (Sandbox Code Playgroud) 我使用GUIDE创建了一个MATLAB GUI.我有一个带回调函数的滑块.我注意到这个回调,它应该执行'滑块移动',实际上只有在滑块移动并释放鼠标后才会运行.
是否有一种方法可以在拖动滑块时运行脚本,以便实时更新绘图?我认为需要做一些事情来阻止脚本运行太多次.
我定义了一个MATLAB对象class_save_test:
classdef class_save_test
methods
function b=saveobj(a)
fprintf('saveobj called.\n');
b=a;
end
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试保存它时:
j=class_save_test
save('delme1.mat','j')
Run Code Online (Sandbox Code Playgroud)
我得到了输出
saveobj called.
saveobj called.
Run Code Online (Sandbox Code Playgroud)
为什么叫两次?我发现这和这个地方的人有同样的问题,但没有答案:-(.我用Matlab 7.11.0(R2010b中).
更新:我已向Mathworks提交了支持请求...请在下面找到答案:-).
我正在尝试运行一个MATLAB程序,它在六个不同的数字中创建一个GUI.最后一个figure(...)
命令超时:
"UIJ_AreThereWindowShowsPending - 超时等待窗口显示"
它可以在具有完全相同设置的不同计算机上运行(OS X 10.7.2,Java 1.6.0_26-b03-383-11A511和MATLAB R2011a).
我找到了一些来自有类似问题但没有解决方案的人的线程.有人认为这是一个java内存问题.我已经尝试在MATLAB中增加java的内存.我还设置了Java首选项以显示控制台,但它不会显示,我无法在任何地方找到任何Java日志文件.
有谁知道我怎么能找到这个问题的根源?为什么Java控制台不能用MATLAB打开?我在哪里可以找到MATLAB相关的java日志?
对于Excel 2010,当我打开过滤器下拉列表时
...如何通过键盘快捷键进入过滤器复选框部分?跳过从"排序A到Z"到"搜索"框的所有内容,一直到复选框.
经过一些研究,我在MATLAB中找到了两个函数来完成任务:
cvpartition
统计工具箱中的功能crossvalind
生物信息学工具箱中的功能现在我用它cvpartition
来创建n倍交叉验证子集,以及统计工具箱中的Dataset
/ Nominal
classes.所以我只是想知道两者之间的区别和各自的优缺点是什么?
如上所述这里,我创建了自己figure.m
这很好地重载内置figure
命令.现在,每当我启动MATLAB时,我都会收到警告
警告:函数C:\ somepath\figure.m与MATLAB内置函数同名.我们建议您重命名该函数以避免潜在的名称冲突.
有没有办法停用此警告,因为在我的情况下它是理想的行为?
您可能会说我应该以不同方式调用我的函数而不是重载,但我觉得我的开发系统这种重载是正确的方法...
更新
正如Aabaz所提到的,您可以使用全局关闭此警告
warning off MATLAB:dispatcher:nameConflict
Run Code Online (Sandbox Code Playgroud)
需要在matlabrc.m
(在设置路径之前)的开始处进行.但是,我仍然会对一个解决方案感兴趣,该解决方案可以特定地删除此错误消息以重载figure.m(或一些自定义的函数列表)而不是所有函数.我猜我在这里要求太多了一些;-)?
matlab ×7
java ×2
callback ×1
data-mining ×1
excel-2010 ×1
git ×1
heap-memory ×1
indexing ×1
jvm-crash ×1
logging ×1
matlab-guide ×1
matrix ×1
memcached ×1
msysgit ×1
overloading ×1
return-value ×1
save ×1
slider ×1
varnish ×1
zip ×1