小编MeS*_*S83的帖子

Matlab在向量中对值进行排名,其中元素重复多次

我想在Matlab中排序(排序)向量的元素,并且具有相同值的元素具有相同的排名(按降序排列).所以我想要一个例程如:

>> Rank = ComputeRanking([ 5 10 5 5 1])

Rank =

2 1 2 2 5
Run Code Online (Sandbox Code Playgroud)

我在mathworks网站上找到了部分解决方案:排名值:

function vecRank = ComputeRanking2(dataVector)

%
% Sort data in descending order with duplicates
%

[srt, idxSrt]  = sort(dataVector,'descend');
% Find where are the repetitions
idxRepeat      = [false; diff(srt) == 0];
% Rank with tieds but w/o skipping
rnkNoSkip      = cumsum(~idxRepeat);
% Preallocate rank
vecRank             = 1:numel(dataVector);
% Adjust for tieds (and skip)
vecRank (idxRepeat) = rnkNoSkip(idxRepeat);
% Sort back
vecRank …
Run Code Online (Sandbox Code Playgroud)

sorting matlab

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

如何在 matlab 中预分配日期时间数组

我想知道是否有一种方法可以datetime在Matlab中预先分配数组。

我解释我的问题:我需要从许多文件(假设它们是 100)中读取多个日期(假设它们是 10),并且我想将其存储在日期时间数组 10X100 中。如果我的数据是简单的数字日期(即double),我可以将数组预先分配为DataTable = zeros(10,100):我想做一些与datetime数据类型类似的事情,但我找不到如何做,你能帮助我吗?

找到可能的解决方法/解决方案

我做了一些测试,发现这个解决方法可能会出现问题:

DataTable = repmat(datetime(0,0,0), 10, 100);
Run Code Online (Sandbox Code Playgroud)

这样我从一开始就有一个datetime初始化为默认值类型的 10X100 数组。我将此编辑发布到问题中,以防它对某人有帮助

arrays matlab datetime

4
推荐指数
1
解决办法
8628
查看次数

在Matlab中的函数之间共享"很多"变量

在Matlab中我有几个存储在矩阵中的数据库记录DataMatrix.矩阵的每一行都是一条记录,每列都是记录属性的值.为了使程序易于理解,DataMatrix我定义了一个变量名称,用于解释与列关联的属性,即:

ColApple = 1;
ColOrange = 2;
ColLemon = 3;
...
Run Code Online (Sandbox Code Playgroud)

我有关于50列的名称.

我的问题是,in in DataMatrix用于不同的函数,我想总是使用列名来处理数据DataMatrix.所以,我有不同的功能,两个数值之间的共享ColApple,ColOrange,ColLemon,...

到目前为止,我想到了两种可能的方法:

  1. 使列名称为全局
  2. 定义一个函数,返回列名的值,即:

    [ColApple, ColOrange, ColLemon, ... ] = getColNames

我会避免使用全局解决方案,因为我认为它很危险,也因为我希望列名称在可能的情况下保持不变.第二种方法更好,但由于我有50列,我不知道是否有一个函数返回50不同的值是一个好主意(在我看来也很难维护).

任何人都有更强大或可维护的方法来解决这个问题?我相信我不是第一个处理这个问题的人,但我无法找到解决方案.

matlab parameter-passing

4
推荐指数
1
解决办法
474
查看次数

标签 统计

matlab ×3

arrays ×1

datetime ×1

parameter-passing ×1

sorting ×1