二维

MATLAB二维插值和三维插值

谁说胖子不能爱 提交于 2020-02-15 10:42:31
插值问题描述:已知 一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2,y2),…,(xn,yn),由此求出y=f(x)在点xa处的值ya的值. 实现一维插值使用interp1命令,使用参数为interp1(x,y,xa,’method’) ,其中x和y是已知点对应横纵坐标,xa为代求值的横坐标,method参数代表插值类型,参数可以选择的选项如下表,若缺省则为linear. method 含义 特 点 linear 线性插值 快,精度不高 cubic 三次多项式插值 较慢,精度高,平滑 spline 三次样条插值 最慢,精度高,最平滑 例如,求y=xln(x)的插值问题,代码如下 %为了说明插值问题,根据已知函数构造一组插值点 %而实际问题中,只有这些点,函数是未知的 x = 0.2:0.4:2; y = x.*log(x);%构造一组插值点 plot(x,y,'o'); xa =0.2:0.1:2;%d代求y值得x值点 ya = interp1(x,y,xa,'cubic'); hold on; plot(xa,ya,'b-'); box on; hold on; fplot(@(x)x*log(x),[0.2,2]); legend('插值点',

leetcode 74. 搜索二维矩阵

╄→гoц情女王★ 提交于 2020-02-15 04:06:34
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 3 输出: true 示例 2: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 13 输出: false 方法1:二分搜索,将二维矩阵看做一位矩阵搜索 public boolean searchMatrix ( int [ ] [ ] matrix , int target ) { if ( matrix . length == 0 ) { return false ; } int row = matrix . length ; int col = matrix [ 0 ] . length ; int right = row * col - 1 ; int left = 0 ; while ( left <= right ) { int mid = ( left + right ) / 2 ; //所在行 int i = mid / col ; //所在列

二维前缀和

荒凉一梦 提交于 2020-02-13 01:27:39
其实很简单啦,就像这样 小学奥数既视感 luogu 2280 激光项链 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) using namespace std; const int N=5010; int g[N][N],n,r,x,y,v; int main(){ ios::sync_with_stdio(false); cin>>n>>r; rep(i,1,n){ cin>>x>>y>>v; g[x+1][y+1]=v;} rep(i,1,5001)rep(j,1,5001) g[i][j]+=g[i-1][j]+g[i][j-1]-g[i-1][j-1]; int ans=0; for(int i=0;i<=5000-r;i++) for(int j=0;j<=5000-r;j++) ans=max(ans,g[i+r][j+r]-g[i+r][j]-g[i][j+r]+g[i][j]); printf("%d",ans);return 0; } 来源: https://www.cnblogs.com/asdic/p/9579943.html

二维前缀和

白昼怎懂夜的黑 提交于 2020-02-13 00:29:37
网易的一道笔试题。 广场大小n*m,广场的某些坐标点上有障碍物,现在需要放置一个c*d大小的物品。问能否放得下? 输入:先输入测试组数t。接下来一行输入广场大小n,m和障碍物个数k。接下来k行每行两个数,代表障碍物的坐标。最后一行是两个数,代表要放的物品的尺寸c,d。 2 3 3 1 1 1 2 2 3 3 1 2 2 2 2 输出:判定结果 YES NO 已知: 1<=n,m<=1000; 1<=c<=n, 1<=d<=m 这道题用到二维前缀和。 所谓二维前缀和,可以用来快速计算大型矩阵的某二维方框内(确定范围内的)的所有数字之和。 详细解释参考链接: https://blog.csdn.net/qq_34990731/article/details/82807870 这道题需要先计算出n*m广场上的二维前缀和,然后枚举所有可能的位置,若出现了c*d大小范围内的和为0,则说明c*d内部没有一个障碍物,所以放得下。若枚举所有可能位置都未输出YES,则输出NO. #include<bits/stdc++.h> using namespace std; //枚举货物放置的左上角,剩下的只需要检查某个矩形里面有没有障碍物。 //把障碍物看成1,空格看成0,维护二维前缀和,就可以快速查询矩形和。 //如果矩形和是0则可以放置。 int n , m , k; int a[1005][1005

二维前缀和

半世苍凉 提交于 2020-02-13 00:28:32
一维前缀和 :   这个优化 , 可以在 O (1) 的时间内计算出一个序列的和 , 二维前缀和 :   对于一个矩阵 , 也可以在 O (1) 的时间内计算出矩阵 (x1~x2)( y1 ~ y2 ) 的和 。   sum[ i ] [ j ] 表示矩阵 1 ~ i , 1 ~ j 的和 , 那么由容斥原理知 sum[ 0 ] [ j ] 和 sum [ i ] [ 0 ] 均为 0 。   则 s[ x1 ~ x2 ] [ y1 ~ y2 ] = sum[ x2 , y2 ] + sum [ x1 - 1 ] [ y1 - 1 ] - sum [ x1 - 1 ][ y2 ] - sum [ x2 ] [ y1-1 ] 。 The Cartesian coordinate system is set in the sky. There you can see n stars, the i -th has coordinates ( x i , y i ), a maximum brightness c , equal for all stars, and an initial brightness s i ( 0 ≤  s i  ≤  c ). Over time the stars twinkle. At moment 0 the i -th star has

霰弹枪[二维的前缀和]

半城伤御伤魂 提交于 2020-02-13 00:22:49
在clyz有一个很厉害的枪手叫做东哥,他的女神qy被本地一个著名的黑帮老大XXX给绑架了,东哥急切地想要找回qy,向椅子买了几件武器。因为首先要轰开clyz的大门,所以他选择了霰弹枪。clyz的大门由N*M块石头组成,而东哥的体积为R行C列(东哥不可被切开),他为了省子弹,他只能轰出一个恰好自己通过的洞,每块石头的价值不同,打碎可获得的金钱也不同,东哥要攒钱买武器,所以要选择轰最大价值的一部分石头,现在他想要知道自己能够获得多少金钱购买下一把武器。 输入格式 第1行:4个正整数N,M,R,C 第2..N+1行:每行M个正整数,第i+1行第j个数表示num[i][j] 输出格式 第 1 行: 1 个整数,表示东哥最多能获得的金钱 输入样例 3 5 2 3 5 2 7 1 1 5 9 5 1 5 3 5 1 5 3 输出样例 33 数据范围 对于60%的数据:1 <= N,M <= 200 对于100%的数据:1 <= N,M <= 1,000 1 <= R <= N, 1 <= C <= M 1 <= num[i][j] <= 1000 保证结果不超过2,000,000,000 题解: 这题有点像求最大子矩阵,但是因为范围是固定的,所以用二维的前缀和搞搞,然后暴力扫一遍即可 之前只会简单一维的前缀和,第一次打二维的,算是学习了一下吧 首先先说一下原理好了 f[i][j]表示从1

垃圾炸弹(二维前缀和)

懵懂的女人 提交于 2020-02-13 00:13:31
题目描述 2014年足球世界杯(2014 FIFA World Cup)开踢啦!为了方便球迷观看比赛,街道上很多路口都放置了的直播大屏幕,但是人群散去后总会在这些路口留下一堆垃圾。为此政府决定动用一种最新发明——“垃圾炸弹”。这种“炸弹”利用最先进的量子物理技术,爆炸后产生的冲击波可以完全清除波及范围内的所有垃圾,并且不会产生任何其他不良影响。炸弹爆炸后冲击波是以正方形方式扩散的,炸弹威力(扩散距离)以d给出,表示可以传播d条街道。 例如下图是一个d=1的“垃圾炸弹”爆炸后的波及范围。 假设城市的布局为严格的[0,1024]*[0,1024]的网格状,由于财政问题市政府只买得起一枚“垃圾炸弹”,希望你帮他们找到合适的投放地点,使得一次清除的垃圾总量最多(假设垃圾数量可以用一个非负整数表示,并且除设置大屏幕的路口以外的地点没有垃圾)。 输入 第一行给出“炸弹”威力d。第二行给出一个数组n表示设置了大屏幕(有垃圾)的路口数目。接下来n行每行给出三个数字x,y,i,分别代表路口的坐标(x,y)以及垃圾数量i。点坐标(x,y)保证是有效的(区间在0到1024之间),同一坐标只会给出一次。 输出 输出能清理垃圾最多的投放点数目,以及能够清除的垃圾总量。 样例输入 1 2 4 4 10 6 6 20 样例输出 1 30 此题主要考察二维数组前缀和; 初始化: 先for循环弄好两个坐标轴上的点;

二维前缀和

烈酒焚心 提交于 2020-02-12 15:40:14
题目链接:https://ac.nowcoder.com/acm/problem/21862海啸 题目描述 有一个沿海地区,可以看作有n行m列的城市,第i行第j列的城市海拔为h[i][j]。 由于沿海,所以这个地区经常会发生海啸。 海啸发生时,部分城市会被淹没,具体来说,海水高度会达到d,因此海拔低于d的城市都会被淹没。 现在有q次询问,每次问你一个矩形区域中,有多少城市不会被淹没。 输入描述: 第一行三个整数n,m,d,具体含义见题目描述。接下来n行,每行m个整数,其中第i行第j列的整数为h[i][j],具体含义见题目描述。第n+2行一个整数q,表示询问数。接下来q行,每行四个整数a,b,x,y,表示询问从第a行第b列到第x行第y列的矩形地区中,有多少地区不会被淹没。即有多少个i,j,满足 a<=i<=x,b<=j<=y,且 h[i][j]>d。 输出描述: 共q行,第i行一个整数,表示第i个询问的答案。 输入 3 3 3 1 2 3 2 1 5 4 3 2 2 1 2 2 3 2 1 3 3 输出 2 3 备注: 1<=n*m<=10^6 1<=q<=10^5 0<=d,h[i][j]<=10^9 1<=a<=x<=n,1<=b<=y<=m 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4

cf1200 D White Lines(二维差分)

我的梦境 提交于 2020-02-11 01:32:29
题目大意 有一个大小为n的矩阵,每个1*1的单位为黑或白,我们可以用一个(只有一个)大小为k*k的白色矩阵覆盖,问:最多的时候有几条白线(横的全为白 或竖的全为白 即为白线)。 思路 要想把一条线(以横的为例)全变为白的,那么我们就需要从这一行最左边的黑色块覆盖到最右边的黑色块,如果两端距离超过k,则无法覆盖,否则就一定可以。那么就一定会产生一个矩阵,选取这个矩阵里面的任何一个点 都可以将这行变为白线;反之,矩阵外的一定不行。所以,可以用差分数组,因为只要选了矩阵里的点,答案就一定就加一。然后二维前缀和,最后max取答案。 代码 #include <stdio.h> #include <queue> #include <string> #include <string.h> #include <algorithm> #include <math.h> using namespace std; typedef long long int ll; const int maxn = 2e3 + 10; const ll inf = 0x3f3f3f3f; int res[maxn][maxn]; char mp[maxn][maxn]; int main() { int n,k,ans,anss; while(scanf("%d%d",&n,&k) != EOF){ for(int i

数据降维方法小结

帅比萌擦擦* 提交于 2020-02-10 08:40:01
原文:http://blog.csdn.net/yujianmin1990/article/details/48223001  数据的形式是多种多样的,维度也是各不相同的,当实际问题中遇到很高的维度时,如何给他降到较低的维度上?前文提到进行属性选择,当然这是一种很好的方法,这里另外提供一种 从高维特征空间向低纬特征空间映射 的思路。 数据降维的目的   数据降维,直观地好处是维度降低了,便于计算和可视化,其 更深层次的意义在于有效信息的提取综合及无用信息的摈弃 。 数据降维的方法   主要的方法是线性映射和非线性映射方法两大类。 线性映射    线性映射方法的代表方法有:PCA(Principal Component Analysis),LDA(Discriminant Analysis) PCA方法简介   主成分分析的 思想 ,就是线性代数里面的K-L变换,就是 在均方误差准则下失真最小的一种变换 。是将原空间变换到特征向量空间内,数学表示为 A x = λ x 。   特征向量和特征值的意义:分别表示不同频率及其幅度。    特征向量和特征值的直白理解: 想在特征空间内找到某个向量 x ,使得其满足 A x = λ x 。这个式子可以这样理解, A 是空间内的运动, x 经过运动 A 后,保持方向不变(仍是 x 的方向),只是大小伸缩了 λ 倍。这样我们找到了 k