小编Fra*_*kje的帖子

使用逻辑索引而不是FIND

在我的代码的循环中,我使用单行查找并绘制一些潜在的最小值(为清楚起见:7对应于包含潜在值的单元格,5对应于x值):

plot(PDdata{subject,5}{1,1}(find(PDdata{subject,7}==...
    min(PDdata{subject,7}))),min(PDdata{subject,7}),'ko')
Run Code Online (Sandbox Code Playgroud)

现在Matlab建议使用逻辑索引而不是FIND,尽管我只是简单地研究过它,但它并没有让我觉得我应该在这里做些什么.这里的主要问题是我是否应该使用逻辑索引(我更喜欢将其保持为单行!),如果是这样的话:怎么样?

我提前为提出这样一个小问题道歉,但我正在努力增加我的Matlab知识,所以希望简短的回答会帮助我!

matlab find

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

在oneliner中选择数组中的n最大值

由于没有特殊原因,我想知道是否可以在一个数组或矩阵中选择n个最大值,所有这些都在oneliner中.

说我有阵列:

A=randn(1,100);
Run Code Online (Sandbox Code Playgroud)

我想要最大的,例如20个值,最好从高到低排序.到目前为止,我有2个班轮:

A_ordered = sort(A,'descend');
A_big20 = A_ordered(1:20);
Run Code Online (Sandbox Code Playgroud)

有谁知道这是否可能在一行?如果是这样,我会很感激线索,想法或答案!

arrays sorting matlab max

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

表达式在字符串中查找多个空格

我们处理了很多敏感数据,我想仅使用每个名称部分的第一个和最后一个字母来掩盖乘客姓名,并将它们连接成三个星号(***),

例如:'John Doe'这个名字将成为'J***n D***e'

对于由两部分组成的名称,可以通过使用表达式查找空间来实现:

LEFT(CardHolderNameFromPurchase, 1) + 
 '***' + 
 CASE WHEN CHARINDEX(' ', PassengerName) = 0 
      THEN RIGHT(PassengerName, 1) 
      ELSE SUBSTRING(PassengerName, CHARINDEX(' ', PassengerName) -1, 1) +
           ' ' + 
           SUBSTRING(PassengerName, CHARINDEX(' ', PassengerName) +1, 1) +
           '***' + 
           RIGHT(PassengerName, 1) 
 END
Run Code Online (Sandbox Code Playgroud)

但是,乘客姓名可以有两个以上的部分,没有实际限制.我怎样才能找到表达式中所有空格的索引?或者我应该以不同的方式解决这个问题?

非常感谢任何帮助或指针!

t-sql sql-server string

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

选择函数的部分输出到新函数中

我有一个矩阵,说:

y=rand(100,101);
Run Code Online (Sandbox Code Playgroud)

现在我想平均第一维,并只使用部分输出(比如只有奇数索引)到另一个函数中.所以我能做到

ymean=mean(y,1)
Run Code Online (Sandbox Code Playgroud)

然后

ymean_partial=somefunction(ymean(1:2:length(ymean)))
Run Code Online (Sandbox Code Playgroud)

我现在的问题是(假设有可能):我怎么能这样做而不必声明'虚拟变量' ymean?我想知道是否有一个我可以使用的单行,因为这个额外的变量占用了大量矩阵的大量内存(我倾向于喜欢单行).

非常感谢!

matlab data-manipulation

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

标签 统计

matlab ×3

arrays ×1

data-manipulation ×1

find ×1

max ×1

sorting ×1

sql-server ×1

string ×1

t-sql ×1