diff(diff(x))
(или diff(x,differences=2)
: благодаря @ZheyuanLi) по существу вычисляет дискретный аналог второй производной, поэтому должен быть отрицательным при локальных максимумах. +1
ниже заботится о том, что результат diff
короче входного вектора.
edit: добавлено @ Коррекция Томми для случаев, когда delta-x не является 1 ...
tt <- c(1,2,3,2,1, 1, 2, 1)
which(diff(sign(diff(tt)))==-2)+1
Мое предложение выше ( http://statweb.stanford.edu/~tibs/PPC/Rdist/ ) предназначено для случая, когда данные более шумны.
Мне удалось создать рабочую демонстрацию этого. Мой класс HighlightSearchPipe
выглядит следующим образом:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'highlightSearch'
})
export class HighlightSearchPipe implements PipeTransform {
transform(value: string, search: string): string {
const valueStr = value + ''; // Ensure numeric values are converted to strings
return valueStr.replace(new RegExp('(?![^&;]+;)(?!<[^<>]*)(' + search + ')(?![^<>]*>)(?![^&;]+;)', 'gi'), '<strong class="your-class">$1</strong>');
}
}
Я изменил класс Typescript, который содержит функцию applyFilter()
, следующим образом:
i. Добавлена переменная класса filterText
, чтобы текст фильтра, набранный пользователем, был доступен в HTML. Эта переменная обновляется в функции applyFilter()
ii. Удален вызов к this.highlight.transform(this.dataSource.filter, this.searchKeyword);
в applyFilter()
@Component({
...
})
export class TableFilteringExample {
...
filterText = '';
applyFilter(filterValue: string) {
this.filterText = filterValue.trim();
this.dataSource.filter = this.filterText.toLowerCase();
}
}
В компоненте HTML я изменил способ рендеринга ячеек с:
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> Name </th>
<td mat-cell *matCellDef="let element">{{element.name}}</td>
</ng-container>
на:
<ng-container matColumnDef="name">
<th mat-header-cell *matHeaderCellDef> Name </th>
<td mat-cell *matCellDef="let element" [innerHTML]="element.name | highlightSearch: filterText"></td>
</ng-container>
Таким образом, значение ячейки (в данном случае element.name
) способно отображать HTML. Он использует канал highlightSearch
для преобразования значения и выделения его части, которая соответствует фильтру.