将 octave/matlab 输出写入剪贴板
Posted
技术标签:
【中文标题】将 octave/matlab 输出写入剪贴板【英文标题】:write octave/matlab output to clipboard 【发布时间】:2014-02-22 13:07:43 【问题描述】:我正在寻找一种将 octave 语句的输出获取到 Windows 剪贴板的方法。
我没有寻找一种方法来手动从 cmd 窗口复制/粘贴文本(我知道这将如何工作)。 iam 也不在寻找完整的 octave 会话的整个输出,这可以通过使用脚本启动 octave 来执行并将所有输出通过管道传输到某个 clip.exe 来获得。 我想从 octave promt 或某个函数或脚本执行的某个语句中捕获输出。
如果有人能提供一些建议,那就太好了。
编辑:
从评论中我了解到 matlab 的剪贴板命令,不幸的是尚未在 octave 中实现。
也许还有其他涉及花哨的system()
电话的想法?
【问题讨论】:
没有比这更容易的了:mathworks.nl/help/matlab/ref/clipboard.htmlclipboard
八度不可用
谢谢。至少我现在知道如何做到这一点的理论方法。不幸的是,丹尼尔是对的。我想知道为什么剪贴板命令没有出现在我的谷歌搜索中。
【参考方案1】:
好吧,显然实现与 Matlab 非常相似的东西并不太困难 - 经过几分钟的摆弄,看看我的新 clipboard.m
:
function clipboard(data)
if ~ischar(data)
data = mat2str(data);
end
data = regexprep(data, '\\','\\\\');
data = regexprep(data, '%','%%');
f = tempname;
h = fopen(f, 'w');
fprintf(h, data);
fclose(h);
system(['clip.exe < ' f]);
delete(f);
end
【讨论】:
两个备注:1. 对于 linux,安装 xclip 并使用这个system()
调用:system(['cat ' f ' | xclip -selection clipboard']);
2. 你可能想使用num2str()
而不是mat2str()
来摆脱周围方括号(堆栈溢出审阅者认为将代码分开更合适,我想直接将它们作为 cmets 添加到上面来自 @Notlikethat 的代码 sn-p 中;对不起那个小混乱,另外因为 cmets 不允许漂亮的格式:/)【参考方案2】:
您总是可以通过system
命令调用xclip
之类的东西。 xclip 使用示例见here
以下 Matlab 命令用于将多行内容放入 Mac 上的剪贴板。大概你会用xclip
替换pbcopy
,它可以在linux 上运行。
>> system(['echo "line1' 10 'line2' 10 'line3" | pbcopy'])
【讨论】:
是的,但是如何使用呢?system("echo 234.4234 | clip.exe")
当然效果很好,但必须是多行字符串。
嗯。在 Windows 和八度音程 system(['echo "line1' 10 'line2' 10 'line3" | pbcopy'])
上仅输出 "line1
每个新行都被解释为自己的命令,因此您的语句拆分为命令 echo "line
、 line2
和 line3 | pbcopy
编辑:我错了,似乎只有第一行会被评估。其他行似乎完全被忽略了以上是关于将 octave/matlab 输出写入剪贴板的主要内容,如果未能解决你的问题,请参考以下文章