小编use*_*001的帖子

bash中的嵌套关​​联数组

可以构造一个关联数组,其元素包含bash中的数组吗?例如,假设有一个具有以下数组:

a=(a aa)
b=(b bb bbb)
c=(c cc ccc cccc)
Run Code Online (Sandbox Code Playgroud)

可以创建一个关联数组来访问这些变量吗?例如,

declare -A letters
letters[a]=$a
letters[b]=$b
letters[c]=$c
Run Code Online (Sandbox Code Playgroud)

然后通过诸如的命令访问各个元素

letter=${letters[a]}
echo ${letter[1]}
Run Code Online (Sandbox Code Playgroud)

这种用于创建和访问关联数组元素的模拟语法不起作用.是否存在实现相同目标的有效表达式?

bash associative-array nested

10
推荐指数
2
解决办法
1万
查看次数

matlab单元格数组中每个元素的长度

a={'a','aa','aaa','aaaa'}
length(a)
  4
size(a)
  1 4
Run Code Online (Sandbox Code Playgroud)

如何使用单个命令获取单元数组中每个元素的长度?上例中的所需输出将是[1 2 3 4].

matlab

8
推荐指数
1
解决办法
2万
查看次数

MATLAB:图形字体

表单的命令xlabel('$<stuff>$','interpreter','latex');将生成一个轴标签,由TeX使用可能是ComputerModern的字体排版.但是,轴刻度标签(例如,0,1,2,...)以默认字体(Helvetica?)显示.我想同步图中的所有字体(最好是ComputerModern).

为此,我假设表格的命令set(0,'DefaultAxesFontName', '<fontname>')可能有用.但是,我需要知道MATLAB TeX解释器使用的字体的确切名称或路径.如何检索字体名称的字符串值或指向默认图形字体和默认TeX解释字体的字体文件的路径?

matlab

8
推荐指数
1
解决办法
3270
查看次数

R:为情节标题,轴标签或图例创建拉丁语/希腊语表达的向量

我想合并拉丁文和希腊文的矢量来生成情节标题,轴标签,图例条目等.我在下面提供了一个简单的例子.我无法弄清楚如何以原生形式呈现希腊字母.我已经尝试的各种组合expression,parse以及applypaste命令,但我还没有能够进行向量化的是容易产生用于单个表达的情况下混合的拉丁/希腊文(例如,代码expression("A ("*alpha*")")适于在一个单一的表达的情况下) .

data<-matrix(seq(20),nrow=5,ncol=4,byrow=TRUE)
colnames(data)<-c("A","B","C","D")
greek<-c(" (alpha)"," (beta)"," (gamma)"," (delta)")
matplot(data)
legend(1,max(data),fill=c("black","red","green","blue"),apply(matrix(paste(colnames(data),greek,sep=""),nrow=4,ncol=1),1,expression))
Run Code Online (Sandbox Code Playgroud)

你能否在apply()声明中帮我解释一下这个legend()陈述?它需要一些修改才能产生所需的输出(即A(α),B(β),C(γ),D(δ)).提前致谢.

plot r legend special-characters tex

8
推荐指数
1
解决办法
5817
查看次数

matlab双重比较

我试图将一个双精度数组与一个标量双精度数进行比较以获得相等,但在某些情况下,平等性永远不会被识别出来.我怀疑这与双重表示的方式有关(例如,1.0 vs 1.00),但我无法弄明白.

例如,我已经生成了一个由数千个双值组成的数组,其中最后几个在某个时刻由下式给出

10.6000
-11.0000
10.2000
22.6000
3.4000
Run Code Online (Sandbox Code Playgroud)

如果我通过命令array==10.2(或array=10.2000)测试等于10.2(或10.2000 ),我返回一个0的数组.如果我手动(例如array=[10.6000 -11.0000 10.2000 22.6000 3.4000])将所显示的值放入数组中,则命令成功(即array==10.2返回0 0 1 0 0).如果我手动输入值,有人可以解释为什么相等成功,但如果在程序的上下文中生成数组则会失败?我能够通过使用近似而不是精确的比较(例如(array<10.20001) & (array>10.19999))来纠正比较失败,但这似乎不令人满意.

编辑:通过迭代加法或减法常量double(例如,0.2)生成数组中的值.因此,该阵列的模数0.2应该在任何地方都等于0.实际上,每个元素的模数等于0或者0.2,如下面数组中的上述数字序列所示:

mod(array,0.2)
...
0.2000
     0
0.2000
0.2000
     0
Run Code Online (Sandbox Code Playgroud)

同样,如果将值手动放置在数组中并且采用模数,0则获得所有s 的期望值.

double comparison matlab

6
推荐指数
1
解决办法
8010
查看次数

使用表达式()显示多个不等式符号

我在设置在R中的绘图窗口上的文本框中显示多个不等式符号时遇到了困难.使用单个不等式是可以接受的,例如mtext(expression("a">="b")).然而,使用三个不等式,例如mtext(expression("a">="b and c"<"d"<="e"))导致解释器停止执行,其抱怨第二个不等式符号是意外的.如何在单个文本框中使用多个不等式?

r

6
推荐指数
1
解决办法
814
查看次数

matlab:KeyPressFcn和WindowKeyPressFcn之间的区别

Matlab文档定义KeyPressFcn是"在图形窗口具有焦点时由按键调用的回调函数".

类似地,定义WindowKeyPressFcn是"在图形窗口或其任何子窗口具有焦点时发生的按键调用的回调函数".

据我所知,数字的子代是像轴,绘图对象和注释对象的实体.如果其中一个孩子有焦点,那么它的父母形象可能也有焦点(至少它的句柄会被返回gcf).因此,我没有看到任何实际的区别KeyPressFcn,WindowKeyPressFcn除了前者,通过其缺少该术语的名称的暗示Window,也可能在没有数字活动时生效,例如在命令窗口中操作时(尽管这个猜想是与回调定义不同意,后者明确调用了数字窗口的存在.

有人请求解释这两个回调函数之间的区别,以及何时使用其中一个可能是首选?

matlab matlab-figure

6
推荐指数
1
解决办法
6245
查看次数

粘贴字符限制

可能重复:
为什么以及在哪里将新行字符引入c()?

我在GNOME终端(版本3.4.1.1)R中的bashshell(版本4.2.36(1))中运行(版本2.15.1 ).有时我会将我的代码写入文本文件,然后将其直接粘贴到控制台中(运行时R).在我粘贴的脚本长度增长之前,我没有遇到任何问题.现在,似乎任何大于4206个字符(包括\n)的代码都被拒绝(即,接受前4206个字符,其余代码被截断;截断伴随着终端"铃声").此字符限制并非特定于bashGNOME终端,因为在粘贴到例如时,我没有观察到字符限制vi.因此,我怀疑字符限制是由强加的R,但不知道如何更改它,假设它是用户可配置的参数.是否可以更改粘贴限制,如果是,则控制它的参数是什么?

terminal gnome r

5
推荐指数
1
解决办法
1905
查看次数

使用bang dollar(`!$`)扩展参数

有没有办法!$在参数扩展上下文中使用?促使这个问题的期望用法是快速(就关键笔划而言)文件名称的更改(例如,不是将文件名保存在变量中并执行rsvg-convert $svg > ${svg/.svg/.png},而是可以改为使用rsvg-convert $! > $!{/.svg/.png},其中$!{/.svg/.png}错误的语法暗示所需的当有问题的文件是前一行的最后一个标记时,这种命令通常可以比在存在共享不同长度的前缀的文件时使用标签完成或者通过复制和粘贴文件名来更快地输入.用鼠标选择).据我所知,没有办法!$在这样的背景下使用,但也许通过一些诡计可以实现类似的效果.

bash parameter-expansion

5
推荐指数
1
解决办法
77
查看次数

在vi中匹配包含一组字符串的任何排列的行

我试图搜索包含一组单词的任何排列的行(不区分大小写).例如,如果我感兴趣的话foobar我想的第一四行,但在下面的不是最后四行匹配file:

Foo and bar.
Bar and foo.
The foo and the bar.
The bar and the foo.
Foobar.
Barfoo.
The foobar.
The barfoo.
Run Code Online (Sandbox Code Playgroud)

看了这篇文章,我意识到我可以构建这样的东西perl:

perl -n -e 'print if (/\bfoo\b.*?\bbar\b/i || /\bbar\b.*?\bfoo\b/i)' file
Run Code Online (Sandbox Code Playgroud)

它正确匹配前四行.另外,使用由提出前瞻构建这个帖子,比赛可以用稍微更简洁的代码做:

perl -n -e 'print if (/(?=.*\bfoo\b)(?=.*\bbar\b)/i)' file
Run Code Online (Sandbox Code Playgroud)

但是,我不能弄清楚如何用vim正则表达式语法编写它们,我发现它比perl正则表达式语法要多得多.我在vim使用搜索功能(/?)时尝试过很多不同的表达方式,但是没有一个能够产生成功的匹配.我意识到,而不是(?=string)使用的语法perl,vim使用\(string\)\@=string\&.

但是,各种尝试,例如:

  • \c\(foo\)\@=\(bar\)@=
  • \c\(foo\)\@=\.*\(bar\)@=
  • \cfoo\&bar\&

(\c …

regex vim perl

3
推荐指数
1
解决办法
205
查看次数