小编yuk*_*yuk的帖子

按特定(自定义)顺序排序整数向量

我有一个整数向量,让我们说从1到3(可以更多):

x <- sample(1:3, 10, replace=T)

[1] 1 3 1 2 2 1 3 2 3 2
Run Code Online (Sandbox Code Playgroud)

如果我排序x我会得到

sort(x)
[1] 1 1 1 2 2 2 2 3 3 3
Run Code Online (Sandbox Code Playgroud)

但我首先需要2s,然后是1s,然后是3s.

[1] 2 2 2 2 1 1 1 3 3 3
Run Code Online (Sandbox Code Playgroud)

那么,如果我有一个向量y = c(2, 1, 3),我如何使用它来排序顺序?

实际上我不需要值本身,而是原始向量中的排序值索引,就像我从order函数中得到的那样.

sorting r vector

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

Matlab函数/类历史

如何找出最初引入Matlab/toolbox版本的特定函数或类?我知道我可以查看所有发行说明,或谷歌可以提供帮助,但还有更好的方法吗?

matlab history class function version

7
推荐指数
1
解决办法
874
查看次数

如何在Matlab中打开DBase文件(.DBF)?

我通过Matlab Central搜索和搜索,但找不到任何方法直接在Matlab中打开DBF文件.TMW File Exchange中有一些DBFREAD函数的引用,但它不再可用.这真的是个问题吗?

我有数据库工具箱,但在那里找不到dbf支持.

我不想使用Excel或其他工具来转换Matlab以外的文件,因为我有很多要处理的文件.ODBC也不好,我需要代码在Mac和Unix下工作.

请帮忙.

matlab dbf dbase

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

在MATLAB中将单元格的单元格数组转换为字符串的单元格数组

在字符串的单元格数组上使用带有标记的regexp,我得到了单元格的单元格数组.这是一个简化的例子:

S = {'string 1';'string 2';'string 3'};
res = regexp(S,'(\d)','tokens')
res = 

    {1x1 cell}
    {1x1 cell}
    {1x1 cell}
res{2}{1}
ans = 
    '2'
Run Code Online (Sandbox Code Playgroud)

我知道在S中每个单元字符串只有一个匹配项.我如何将这个输出转换为矢量化形式的字符串单元格数组?

regex string matlab cell

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

如何在MATLAB中随机置换三维矩阵中的列

我有3D矩阵(10000 x 60 x 20),我需要置换第二维和第三维,保持列完好无损.

对于2D矩阵,我使用RANDPERM:

pidx = randperm(size(A,2));
Aperm = A(:,pidx);
Run Code Online (Sandbox Code Playgroud)

我不能只应用RANDPERM两次 - 首先是列索引,然后是页面索引.没有足够的随机化.

一种解决方案是将矩阵从3D压缩到2D,将页面和页面压缩到列,对其进行置换,然后重新整形.但我也想以这样一种方式进行排列,即每列独立地排列列.就像是:

Aperm = zeros(size(A));
for p=1:size(A,3)
    pidx = randperm(size(A,2));
    Aperm(:,:,p) = A(:,pidx,p);
end
Run Code Online (Sandbox Code Playgroud)

我能更有效地完成吗?有更好的方法吗?

random matlab permutation matrix

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

MATLAB:设置行的颜色和样式顺序并行应用

设置时DefaultAxesColorOrder,DefaultAxesLineStyleOrderMATLAB将首先使用第一种样式循环显示所有颜色,然后再使用第二种样式循环显示所有颜色,依此类推.

请参阅此文档相关问题.

我想要做的是设置颜色顺序和样式顺序,以便独立应用.

例如,如果我设置DefaultAxesColorOrder[1 0 0; 0 1 0; 0 0 1]DefaultAxesLineStyleOrder'-|--|:',线条将是'r-','g-','b-','r--','g--','b--','r:','g:','b:'.我想线路是'r-','g--','b:'.

matlab plot colors line linestyle

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

在MATLAB中将“大量”图形保存为PDF-渲染问题

我在MATLAB中生成了一个包含大量元素(100000+)的图形,并希望将其保存到PDF文件中。使用zbuffer或painters渲染器,我得到了一个非常大且缓慢打开的文件(超过4 Mb)-所有点均为矢量格式。使用OpenGL渲染器将PDF中的图形光栅化,可以使用该图,但对于文本标签则不好。文件大小约为150 Kb。

尝试使用以下简化代码,例如:

x=linspace(1,10,100000);
y=sin(x)+randn(size(x));
plot(x,y,'.')
set(gcf,'Renderer','zbuffer')
print -dpdf -r300 testpdf_zb
set(gcf,'Renderer','painters')
print -dpdf -r300 testpdf_pa
set(gcf,'Renderer','opengl')
print -dpdf -r300 testpdf_op
Run Code Online (Sandbox Code Playgroud)

带有多个轴和不同类型的图的实际图形要复杂得多。

有什么方法可以栅格化图形,但将文本标签保留为矢量?

OpenGL的另一个问题是在Mac OSX的终端模式(-nosplash -nodesktop -nodisplay)下不起作用。看起来不支持OpenGL。我必须使用终端模式进行自动化。我运行的MATLAB版本是2007b。Mac OSX服务器10.4。

pdf matlab rendering save

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

我可以将我的MATLAB程序作为开源发布吗?

我知道,一般的答案是肯定的,但这是我的情况.

我从一个MATLAB的工具箱中获得了一个绘图功能,并修改了它的m文件来绘制我需要的东西.最终,这个功能成为我希望作为开源(或其他许可证)分发的程序的一部分.我可以这样做吗?好吧,以这种方式创建一个函数可能并不明智,但我当时并没有考虑分发.该功能仍然依赖于此工具箱中的其他功能,因此潜在用户应该拥有该许可证.

有什么想法,建议吗?

你有没有直接修改MATLAB的m文件?

matlab licensing open-source

5
推荐指数
2
解决办法
1431
查看次数

SET游戏赔率模拟(MATLAB)

我最近发现了很棒的卡片--SET.简而言之,有81种具有四种特征的卡片:符号(椭圆形,波浪形或菱形),颜色(红色,紫色或绿色),数字(一,二或三)和阴影(实心,条纹或开放).任务是定位(从选定的12张卡片)一套3张卡片,其中每张卡片上的四个特征中的每一个都是相同的,或者每张卡片上的所有特征都是不同的(没有2 + 1组合).

我已经在MATLAB中对其进行了编码以找到解决方案,并估计随机选择卡片中设置一组的几率.

这是我估算赔率的代码:

%% initialization
K = 12; % cards to draw
NF = 4; % number of features (usually 3 or 4)
setallcards = unique(nchoosek(repmat(1:3,1,NF),NF),'rows'); % all cards: rows - cards, columns - features
setallcomb = nchoosek(1:K,3); % index of all combinations of K cards by 3

%% test
tic
NIter=1e2; % number of test iterations
setexists = 0; % test results holder
% C = progress('init'); …
Run Code Online (Sandbox Code Playgroud)

simulation matlab probability set

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

编写ggplot自定义几何函数

我正在编写一个函数来创建ggplot的散点图,其中点的大小表示具有相同X和Y坐标的点的数量.

我有一个有效的功能:

require(dplyr)
plot_size_bubbles <- function(x,y) {
  dd = data.frame(x,y) %>%
    group_by(x,y) %>%
    summarise(n=n()) %>%
    ungroup()
  ggplot(dd, aes(x,y)) + geom_point(aes(size=n))
}

X = sample(1:3,10,replace = T)
Y = sample(1:3,10,replace = T)
plot_size_bubbles(X,Y)
Run Code Online (Sandbox Code Playgroud)

我想以ggplot的风格作为从geom_point继承的自定义几何函数.也许我可以使用一些统计功能,不确定.基本上我想将ggplot传递给数据框,映射x和y,并在不事先计算点大小的情况下创建此图.喜欢

ggplot(data.frame(X,Y), aes(X,Y)) + geom_sizebubble()
Run Code Online (Sandbox Code Playgroud)

此外,从原始数据框中获得x和y轴标签会很棒.

希望这是可能的,我只是遗漏了一些东西.

r ggplot2 ggproto

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