(Ⅰ)求得m=1时,f(x)的导数,可得切点坐标和切线的斜率,由点斜式方程可得所求切线的方程;
(Ⅱ)证法一:运用分析法证明,当m≥1时,f(x)=mex-lnx-1≥ex-lnx-1.要证明f(x)>1,只需证明ex-lnx-2>0,思路1:设g(x)=ex-lnx-2,求得导数,求得单调区间,可得最小值,证明大于0即可;
1、A按下“设置”键3到5秒,进入“F1”,状态预设为“单位摄氏度”,正确的屏幕显示是“F-1,℃闪烁”;
2、B再按下“设置”键进入“F-2”是报警温度设定,正确的屏幕显示是“F-2,38.0℃”;
3、C再按下“设置”键进入“F-3”是模式转换,默认模式是“体温”模式,屏幕显示是“F-3,体温0”;
4、D再按下“设置”键进入“F-4”校准功能,默认模式是“0.0摄氏度”,屏幕显示是“F-4, 0.0℃”;
5、E再按下“设置”键进入“F-5”蜂鸣器开关,屏幕显示是“F-5, 1”。再按下“设置”键,然后会自动保存退出,产品就设置好了
AFG-阿富汗
AHO-荷属安的列斯
ALB-阿尔巴尼亚
ALG-阿尔及利亚
AND-安道尔
ANG-安哥拉
ANT-安提瓜和巴布达
ARG-阿根廷
ARM-亚美尼亚
ARU-阿鲁巴
ASA-美属萨摩亚
AUS-澳大利亚
AUT-奥地利
AZE-阿塞拜疆
BAH-巴哈马
BAN-孟加拉国
BAR-巴巴多斯
BDI-布隆迪
BEL-比利时
BEN-贝宁
BER-百慕大
BHU-不丹
BIH-波黑
BIZ-伯利兹
BLR-白俄罗斯
BOL-玻利维亚
BOT-博茨瓦纳
BRA-巴西
BRN-巴林
BRU-文莱
BUL-保加利亚
BUR-布基纳法索
CAF-中非
CAM-柬埔寨
CAN-加拿大
CAY-开曼群岛
CGO-刚果(布)
CHA-乍得
CHI-智利
CHN-中国
CIV-科特迪瓦
CMR-喀麦隆
COD-刚果(金)
Cok-库克群岛
COL-哥伦比亚
COM-科摩罗
CPV-佛得角
CRC-哥斯达黎加
CRO-克罗地亚
CUB-古巴
CYP-塞浦路斯
CZE-捷克
DEN-丹麦
DJI-吉布提
DMA-多米尼加
DOM-多米尼加共和国
ECU-厄瓜多尔
EGY-埃及
ERI-厄立特里亚
ESA-萨尔瓦多
ESP-西班牙
EST-爱沙尼亚
ETH-埃塞俄比亚
FIJ-斐济
FIN-芬兰
FRA-法国
FSM-密克罗尼西亚联邦
GAB-加蓬
GAM-冈比亚
GBR-英国
GBS-几内亚比绍
GEO-格鲁吉亚
GEQ-赤道几内亚
GER-德国
GHA-加纳
GRE-希腊
GRN-格拉纳达
GUA-危地马拉
GUI-几内亚
GUM-关岛
GUY-圭亚那
HAI-海地
HKG-中国香港
HON-洪都拉斯
HUN-匈牙利
INA-印度尼西亚
IND-印度
IRI-伊朗
IRL-爱尔兰
IRQ-伊拉克
ISL-冰岛
ISR-以色列
ISV-美属维尔京群岛
ITA-意大利
IVB-英属维尔京群岛
JAM-牙买加
JOR-约旦
JPN-日本
KAZ-哈萨克斯坦
KEN-肯尼亚
KGZ-吉尔吉斯斯坦
KIR-基里巴斯
KOR-韩国
KSA-沙特
KUW-科威特
LAO-老挝
LAT-拉脱维亚
LBA-利比亚
LBR-利比里亚
LCA-圣卢西亚
LES-莱索托
LIB-黎巴嫩
LIE-列支敦士登
LTU-立陶宛
LUX-卢森堡
MAD-马达加斯加
MAR-摩洛哥
MAS-马来西亚
MAW-马拉维
MDA-摩尔多瓦
MDV-马尔代夫
MEX-墨西哥
MGL-蒙古
MHL-马绍尔群岛
MKD-马其顿
MLI-马里
MLT-马耳他
MNE-黑山
MON-摩纳哥
MOZ-莫桑比克
MRI-毛里求斯
MTN-毛里塔尼亚
MYA-缅甸
NAM-纳米比亚
NCA-尼加拉瓜
NED-荷兰
NEP-尼泊尔
NGR-尼日利亚
NIG-尼日尔
NOR-挪威
NRU-瑙鲁
NZL-新西兰
OMA-阿曼
PAK-巴基斯坦
PAN-巴拿马
PAR-巴拉圭
PER-秘鲁
PHI-菲律宾
PLE-巴勒斯坦
PLW-帕劳
PNG-巴布亚新几内亚
POL-波兰
POR-葡萄牙
PRK-朝鲜
PUR-波多黎各
QAT-卡塔尔
ROU-罗马尼亚
RSA-南非
RUS-俄罗斯
RWA-卢旺达
SAM-萨摩亚
SEN-塞内加尔
SEY-塞舌尔
SIN-新加坡
SKN-圣基茨和尼维斯
SLE-塞拉利昂
SLO-斯洛文尼亚
SMR-圣马力诺
SOL-所罗门群岛
SOM-索马里
SRB-塞尔维亚
SRI-斯里兰卡
STP-圣多美和普林西比
SUD-苏丹
SUI-瑞士
SUR-苏里南
SVK-斯洛伐克
SWE-瑞典
SWZ-斯威士兰
SYR-叙利亚
TAN-坦桑尼亚
TGA-汤加
THA-泰国
TJK-塔吉克斯坦
TKM-土库曼斯坦
TLS-东帝汶
TOG-多哥
TPE-中华台北
TRI-特立尼达和多巴哥
TUN-突尼斯
TUR-土耳其
TUV-图瓦卢
UAE-阿联酋
UGA-乌干达
UKR-乌克兰
URU-乌拉圭
USA-美国
UZB-乌兹别克斯坦
VAN-瓦努阿图
VEN-委内瑞拉
VIE-越南
VIN-圣文森特和格林纳丁斯
YEM-也门
ZAM-赞比亚
ZIM-津巴布韦
给定至少两个随机变量X,Y,…, 它们的联合概率分布(Joint probability distribution)指的是每一个随机变量的值落入特定范围或者离散点集合内的概率. 对于只有两个随机变量的情况, 称为二元分布(bivariate distribution).
联合概率分布可以使用联合累计分布函数(joint cumulative distribution function), 连续随机变量的联合概率密度函数(joint probability density function)或者离散变量的联合概率质量函数(joint probability mass function)来描述. 由此又衍生出两个概念: 边缘分布(marginal distribution)和条件概率分布(conditional probability distribution).
二. 离散变量的联合概率质量函数公式
公式:
?
?是给定X=xX=x的Y=yY=y的条件概率.
而且有:
?
如果XX和YY相互独立:
?
如果XX和YY条件不独立(conditionally dependent):
P(X=x and Y=y)=P(X=x)?P(Y=y|X=x)P(X=x and Y=y)=P(X=x)·P(Y=y|X=x)
也可以使用联合累计分布函数的差分来计算:
联合累计分布函数定义是:
?
所以F(x,y)F(x,y)的导数(差分)就是P(X=x and Y=y)P(X=x and Y=y)
三. 使用Matlab计算离散2D联合分布
参考: Calculating a 2D joint probability distribution
离散2D联合分布可用于计算两张图片的互信息MI.
0. 定义两个离散的随机变量.
有N个点分布在边长为1的正方形区域内. 把正方形分为K1*K2的小矩形. 统计每个小矩形内的点的个数.
% Data
N = 1e5; % number of points
xy = rand(N, 2); % coordinates of points
xy(randi(2*N, 100, 1)) = 0; % add some points on one side
xy(randi(2*N, 100, 1)) = 1; % add some points on the other side
xy(randi(N, 100, 1), :) = 0; % add some points on one corner
xy(randi(N, 100, 1), :) = 1; % add some points on one corner
inds= unique(randi(N, 100, 1));
xy(inds, :) = repmat([0 1], numel(inds), 1); % add some points on one corner
inds= unique(randi(N, 100, 1));
xy(inds, :) = repmat([1 0], numel(inds), 1); % add some points on one corner
% Intervals for rectangles
K1 = ceil(sqrt(N/5)); % number of intervals along x
K2 = K1; % number of intervals along y
int_x = [0:(1 / K1):1]; % intervals along x
int_y = [0:(1 / K2):1]; % intervals along y
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1. 从定义出发, 使用for循环:
tic
count_cells = zeros(K1, K2);
for k1 = 1:K1
inds1 = (xy(:, 1) >= int_x(k1)) & (xy(:, 1) < int_x(k1 1));
for k2 = 1:K2
inds2 = (xy(:, 2) >= int_y(k2)) & (xy(:, 2) < int_y(k2 1));
count_cells(k1, k2) = sum(inds1 .* inds2);% 布尔相乘得到交集点的个数
end
end
toc
% Elapsed time is 39.357691 seconds.
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
可见使用两重循环的计算时间非常长.
2. 使用hist3函数
N=hist3(X,'Edges',edges)是matlab中专门计算二元分布的函数.
edges是包含两个递增array的cell. 第一维分组edge1是edges{1}, 第二维分组edge2是edges{2}.
也就是:
edges1(i)<=X(k,1)<edges1(i 1)edges1(i)<=X(k,1)<edges1(i 1)
edges2(j)<=X(k,2)<edges2(j 1)edges2(j)<=X(k,2)<edges2(j 1)
正好落在edges1(i 1)edges1(i 1)或者edges2(j 1)edges2(j 1)上的点的个数放在N的最后一行或者最后一列.
hist3不统计edges范围外的部分.
N是一个二维矩阵, 统计的落到每个单元格内的点的个数.
tic
count_cells_hist = hist3(xy, 'Edges', {int_x int_y});
% 注意hist3得到的矩阵是K1 1*K2 1的, 所以把最后一行和一列去掉.
% 最后一行或一列表示的是 X(k,1)= edges{1}(end)或者X(k,2) = edges{2}(end)的点数
count_cells_hist(end, :) = []; count_cells_hist(:, end) = [];
toc
all(count_cells(:) == count_cells_hist(:))
% Elapsed time is 0.017995 seconds.
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
显然比用两重for循环快多了.
3. 使用矩阵二元操作bsxfun
C = bsxfun(fun,A,B)对A和B做逐个元素的二元操作, 操作由函数 fun指定.
返回的C中, 1表示满足条件, 0 表示不满足条件. 可用的fun有:
fun\toperation
@plus\tPlus
@minus\tMinus
@timesArray\tmultiply
@rdivideRight\tarray divide
@ldivideLeft\tarray divide
@power\tArray power
@max\tBinary maximum
@min\tBinary minimum
@rem\tRemainder after division
@mod\tModulus after division
@atan2\tFour-quadrant inverse tangent; result in radians
@atan2d\tFour-quadrant inverse tangent; result in degrees
@hypot\tSquare root of sum of squares
@eq\tEqual
@neNot equal\t
@ltLess than\t
@le\tLess than or equal to
@gt\tGreater than
@ge\tGreater than or equal to
@andElement-wise\tlogical AND
@orElement-wise\tlogical OR
@xorLogical\texclusive OR
使用bsxfun的matlab代码:
%% bsxfun
tic
xcomps = single(bsxfun(@ge,xy(:,1),int_x));% 10000*143矩阵
ycomps = single(bsxfun(@ge,xy(:,2),int_y));% 10000*143矩阵
% 相当于求CDF
count_again = xcomps.' * ycomps; %' 143x143 = 143x1e5 * 1e5x143
% 差分后是142*142
count_again_fix = diff(diff(count_again')');
toc
% Elapsed time is 0.178316 seconds.
all(count_cells_hist(:) == count_again_fix(:))
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
bsxfun稍逊于hist3, 可以针对没有statistics toolbox的情况下使用.
4. 使用accumarray
A= accumarray(subs,val)使用subs的元素值作为索引. subs和val是一一对应的. 将subs中相同值对应的val值累加. 也就是说, subs中元素的位置决定了val哪些元素相加, subs中元素的值决定了累加值在输出中的位置. 看matlab help中示例:
Example 1
Create a 5-by-1 vector and sum values for repeated 1-D subscripts:
val = 101:105;
subs = [1; 2; 4; 2; 4];
A = accumarray(subs, val)
A =
101 % A(1) = val(1) = 101
206 % A(2) = val(2) val(4) = 102 104 = 206
0 % A(3) = 0
208 % A(4) = val(3) val(5) = 103 105 = 208
subs中元素值必须是正整数值. 所以在表示分组时, 可以把[0,1]区间变为[1,K1]区间. matlab代码:
%%%%% 第五种方法Using accumarray
% Another approach is to use accumarray to make the joint histogram after we bin the data.
% Starting with int_x, int_y, K1, xy, etc.:
tic
% take (0,1) data onto [1 K1], following A.Dondas approach for easy comparison
ii = floor(xy(:,1)*(K1-eps)) 1;
ii(ii<1) = 1; ii(ii>K1) = K1;
jj = floor(xy(:,2)*(K1-eps)) 1;
jj(jj<1) = 1; jj(jj>K1) = K1;
% create the histogram and normalize
H = accumarray([ii jj],ones(1,size(ii,1)));
PDF = H / size(xy,1); % for probabilities summing to 1
toc
% Elapsed time is 0.006356 seconds.
all(count_cells_hist(:) == count_again_fix(:))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ms级别! 真是快!
5. 使用mex编译
mex混合编程参考: 在Matlab中使用mex函数进行C/C 混合编程
#include "mex.h"
// 小梁结]
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
unsigned long int hh, ctrl; /* counters */
unsigned long int N, m, n; /* size of matrices */
unsigned long int *xy; /* data */
unsigned long int *count_cells; /* joint frequencies */
/* matrices needed */
mxArray *count_cellsArray;
/* Now we need to get the data */
if (nrhs == 3) {
xy = (unsigned long int*) mxGetData(prhs[0]);
N = (unsigned long int) mxGetM(prhs[0]);//取矩阵的行数
m = (unsigned long int) mxGetScalar(prhs[1]);
n = (unsigned long int) mxGetScalar(prhs[2]);
}
/* Then build the matrices for the output */
count_cellsArray = mxCreateNumericMatrix(m 1, n 1, mxUINT32_CLASS, mxREAL);
count_cells = mxGetData(count_cellsArray);
plhs[0] = count_cellsArray;
hh = 0; /* counter for elements of xy */
/* for all points from 1 to N */
for(hh=0; hh<N; hh ) {
ctrl = (m 1) * xy[N hh] xy[hh];
count_cells[ctrl] = count_cells[ctrl] 1;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
将代码保存为: joint_dist_points_2D.c. 在matlab cmd中运行:
mex joint_dist_points_2D.c
1
1
生成joint_dist_points_2D.mexw32文件.
matlab调用代码:
% Use mex function
tic
xy2 = uint32(floor(xy ./ repmat([1 / K1, 1 / K2], N, 1)));
count_cells = joint_dist_points_2D(xy2, uint32(K1), uint32(K2));
toc
% Elapsed time is 0.011696 seconds.
1
2
3
4
5
6
1
2
3
4
5
6
也是非常快的.
正加财富网内容推荐 | ||
OK交易所下载 | USDT钱包下载 | 比特币平台下载 |
新手交易教程 | 平台提币指南 | 挖矿方法讲解 |