我真的不明白为什么我们不总是选择中间元素作为支点.这可以在O(n)中完成,因此导致总运行时间为O(n log n).
我只是假设在中值搜索的O(n)中可能隐藏了一个大常量.
我是matlab的新手,所以请原谅我,如果我在这里要求明显的:我所拥有的是一组彩色摄影图像(所有相同的尺寸).我想要做的是计算每个像素的中值颜色值.
我知道matlab中有一个中值滤波器,但据我所知,它并不能完全符合我的要求.因为我想计算整个图像集合之间的中值,对于每个单独的像素.
因此,例如,如果我有三个图像,我希望matlab计算(对于每个像素)这三个图像中的哪个颜色值是中值.我怎么会这样做,有人知道吗?
编辑:从我能想到的,我将不得不将所有图像加载到一个矩阵中.矩阵必须具有4个维度(高度,宽度,rgb,图像),并且对于每个像素,每个颜色在第4维度(图像之间)中找到中值.这是正确的(并且可能)吗?我怎么能这样做?
我有以下Linq查询:
List<MonthlySales> monthlySales = (from sale in Sales
group sale by new { sale.DateSold.Month, sale.Product.Shop } into ds
select new MonthlyTitleSales
{
Shop = ds.Select(it => it.Product.Shop).FirstOrDefault(),
Month = ds.Select(it => it.DateSold.Month).FirstOrDefault(),
Year = ds.Select(it => it.DateSold.Year).FirstOrDefault(),
USDNumberItemsSold = ds.Where(it => it.USDCut.HasValue).Where(it => it.USDCut != 0).Count(),
GBPNumberItemsSold = ds.Where(it => it.GBPCut.HasValue).Where(it => it.GBPCut != 0).Count(),
EURNumberItemsSold = ds.Where(it => it.EURCut.HasValue).Where(it => it.EURCut != 0).Count(),
USDRevenueTotal = PerformCurrencyConversion(ds.Sum(it => it.USDCut.HasValue ? it.USDCut.Value : 0), 0M, 0M, Currency, endDate),
GBPRevenueTotal = PerformCurrencyConversion(0M, …Run Code Online (Sandbox Code Playgroud) 我有 2 个颜色的字符串表示(例如:“ #FFFFFF”和“ #000000”),我正在寻找一种以编程方式获取这两种颜色的中间颜色的方法。我称之为“中位数”的颜色将是在中心与这两个颜色相交的颜色。
我需要这个以便分两步绘制渐变:
所以它看起来像从第一种颜色到第二种颜色的 1 个渐变,这是我做不到的。
我怎样才能做到这一点?
(我的代码是用Java编写的,但问题是不可知的;我只是在寻找算法的想法)
所以这就是问题所在:我创建了一个方法,只需找到数据集的中位数(以数组的形式给出).这是实施:
public static double getMedian(int[] numset) {
ArrayList<Integer> anumset = new ArrayList<Integer>();
for(int num : numset) {
anumset.add(num);
}
anumset.sort(null);
if(anumset.size() % 2 == 0) {
return anumset.get(anumset.size() / 2);
} else {
return (anumset.get(anumset.size() / 2)
+ anumset.get((anumset.size() / 2) + 1)) / 2;
}
}
Run Code Online (Sandbox Code Playgroud)
我去学校的老师然后挑战我写一个方法再次找到中位数,但没有使用任何数据结构.这包括任何可以容纳多个值的东西,所以包括字符串,任何形式的数组等等.我花了很长时间试图想出一个想法,我很难过.有任何想法吗?
我在这里和这里偶然发现了用于计算百分位数的纯python实现:
import math
import functools
def percentile(N, percent, key=lambda x:x):
"""
Find the percentile of a list of values.
@parameter N - is a list of values. Note N MUST BE already sorted.
@parameter percent - a float value from 0.0 to 1.0.
@parameter key - optional key function to compute value from each element of N.
@return - the percentile of the values
"""
if not N:
return None
k = (len(N)-1) * percent
f …Run Code Online (Sandbox Code Playgroud) 给定一个带有n元素的只读数组,请找到该数组中的中位数(ceiling(n/2)按大小排列的第-个元素),以及O(logn)空格和平均时间O(nlogn)。
我考虑过使用Quicksort的想法,但是如果不更改数组就无法执行它。而复制到另一个阵列将超出所需的空间。
我正在根据大数据(2150000 例)绘制一个简单的箱线图,显示两组每年的体重。除去年的最后一组外,所有组的中位数均相同,但在箱线图上,它的绘制方式与其他组相同。
#boxplot
ggplot(dataset, aes(x=Year, y=SUM_MME_mg, fill=GenderPerson)) +
geom_boxplot(outlier.shape = NA)+
ylim(0,850)
#median by group
pivot <- dataset %>%
select(SUM_MME_mg,GenderPerson,Year )%>%
group_by(Year, GenderPerson) %>%
summarise(MedianValues = median(SUM_MME_mg,na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚我做错了什么,或者在箱线图计算或中值函数中哪些数据更准确。R 不返回错误或警告。
#my data:
> dput(head(dataset[,c(1,7,10)]))
structure(list(GenderPerson = c(2L, 1L, 2L, 2L, 2L, 2L), Year = c("2015",
"2014", "2013", "2012", "2011", "2015"), SUM_MME_mg = c(416.16,
131.76, 790.56, 878.4, 878.4, 878.4)), row.names = c(NA, 6L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud) 有人知道R中是否存在2d矩阵的滑动窗口方法,而不仅仅是向量.我需要将中值函数应用于存储在矩阵中的图像