matlab提取矩阵中点的坐标

作者&投稿:召要 (若有异议请与网页底部的电邮联系)
MATLAB如何在坐标矩阵中提取一定范围的点的坐标~

设你的数据是a,则程序可这样:
x=a(:,1);y=a(:,2);
[x1,xind]=find(x>=1&&x<=3);
[y2,yind]=find(y>=2&&y<=5);
y1=y(xind);x2=x(yind);
x3=[x1;x2};y3=[y1:y2];
scatter(x3,y3)

[i,j]=find(A==5)
count=length(i)
6和7类似做法

没办法了,不好意思

楼上的方法挺高深的,但是我实验了。发现有“漏网之鱼”。

我将我办法和他的对比了一下,如下图:

可以看出,用楼上的方法解,行坐标为100的,对应的列坐标只有13,14两个点。

而事实上,有10,11,12,13,14共5个点。

而第一行只有(1,1)、(1,2)两个点,事实上,有1到5共5个点

不止第一行和最后一行,中间的每一行都有漏点。

图中,*表示应该包括的点,o表示上述方法包括的点(看不清,就是线的端点之间的点)。

我的方法说起来简单,就是先找到边界直线。然后将所有满足的点找出来。

我定义了一个函数,其说明如下(函数主体在附件中,可以自己看):

function [x1,y1,totalnum] = myarea(a,b,c,d)
%% 该函数返回任意指定上下两边平行的四边形区域,所有在选定区域内点对应的x和y坐标
% 及在区域内点的个数
% 其中x1、y1为区域内所有点的横、纵坐标,为行向量。x,y在向量中对应位置为一组
%totalnum返回区域内点的个数
%a,b,c,d为从左上角开始四边形顺时针给出的四边形顶点
%如下,为一个正确给定的区域:
% a = [1,1];
% b = [1,7];
% c = [9,4];
% d = [9,7];

比如,输入命令如下:

 [x,y,num] = myarea([1,1],[1,7],[9,4],[9,7]);

返回的结果我直接用图给你表示吧:

其中红色是指定的端点,写‘1’的是判断在区域内的点。效果还是比较理想的。

代码在附件中。



d=[1 1;
   1 5;
   100 14;  %注意最后两个顺序相反
   100 10];  
%输入四个顶点,注意让四个顶点按顺序连起来能形成凸多边形

a=[];
for jj=1:100
    for ii=1:100
        r=[d zeros(4,1)]-repmat([ii jj 0],[4 1]);
        %计算4个顶点到ii,jj点的矢量,并加入z座标0
        c=cross(r,circshift(r,1),2);%计算相邻矢量的叉乘积
        if all(c(:,3)>=0)||all(c(:,3)<=0)%判断所有叉乘积的z分量符号是否相同
            a=[a; [ii jj]];%如果相同,记录ii,jj坐标
        end
    end
end


主要用到判断点是否在凸多边形内的叉乘判断法


首先把要判断的点到多边形的各个角点的矢量求出来

再按顺序依次求相邻两个矢量中间的叉乘

由于点都在xy平面,叉乘结果的矢量肯定在z放向上


如果点在多边形内,那么得到的所有z矢量方向相同,同时大于零或同时小于零

如果刚好在某边所在直线上,对应的z矢量为0


因此判断是否说有z都是>=0或者<=0就可以判断点是否在凸多边形内




怎么提取matlab中矩阵的某个数
x = [1 2 4;4 5 7];[row,col]= size(x);统计矩阵x的行数及列数,并分别赋值给row和col fprintf('row=%d,col=%d\\n',row,col);输出 row=2,col=3

matlab中如何取出矩阵中的某一个值
1、打开matlab,在命令行窗口中输入 a=[1 2 3;4 5 6],按回车键,创建一个2行3列的a矩阵 2、如果我们想获取矩阵第2行第1列的值,输入a(2,1)3、如果想获取矩阵第2行第3列的值,输入a(2,3)4、如果想间隔的获取矩阵多个值,可以使用 a(2,[1 3])方式,这是获取矩阵第2行第1列,第...

matlab怎么取出矩阵中的部分元素
A(50,:)提取的是第50行的元素,A(:,50)提取的是第50列的元素。以下是代码:A=[0 2 3;4 5 6;7 8 9]'B =[ 1 0 1 0 1 0 0 0 0]'k=A(B==1)C=mat2cell(k,sum(B))D=sum(A.*B)一、电脑不能启动的原因 系统不承认硬盘 此类故障比较常见,即从硬盘无法...

matlab提取已知矩阵元素组成新矩阵
N=704;M=1280;n=32;m=64;A=rand(N,M); %生成原始数据矩阵 B=reshape(A,n,m,N*M\/(n*m)); %重置矩阵为 32×64×440结构 for k=1:n %选择1-32生成小矩阵 eval(['M' num2str(k) '=B(:,:,k)']); %执行 M1=B(:,:,1)...mr(k)=eval(['rank(M' num2str(k) ')']...

matlab 中提取矩阵中已知坐标的值
s为索引矩阵,m为横坐标,n为纵坐标 如果使用以下方法,肯定得不到想要的结果,结果是一个方阵 >> s1=s(m,n)可以使用循环实现:>> s1=zeros(1,length(m));for i=1:length(m);s1(i)=[s(m(i),n(i))];end s1 s1 = 8 12 15 20 24 28 31 ...

matlab 直接得到矩阵一列、或者一行
使用matlab,可以对矩阵直接得到矩阵的一行或者一列,也可以打印出来。假设已经定义了矩阵A,若提取A的第二行重新组成一个行向量,可以使用A(2,:)进行提取,对于列向量的提取同理。若需要矩阵A的2到6行,3到7列的数据重新组成矩阵,可以使用A(2:6,3:7)进行提取。若要打印某一行,可以利用fprintf...

MATLAB矩阵提取的一道简单的题
应该是最后一句有问题,因为L是2X5的矩阵。这样写应该就可以了:A=rand(4,5);L=A([1,2],:)>0.3;A2=A([1,2],:).*L

matlab 提取矩阵下标,该怎么处理
矩阵所有元素的下标的话,是不需要提取的,所在行列就是,且行是从第一行开始,逐个加1,列也是从1开始,逐次加一。如果是符合某个条件的元素的下标,如5行5列的随机矩阵中元素大于0.5的元素的矩阵下标,可以用find函数这样提取:a=rand(5,5)[row,col]=find(a>0.5);[row col]---运行结果:...

在matlab里如何用for循环取出一个矩阵中的各个列向量
1、首先打开matlab软件主界面,在命令窗口输入矩阵A=[1,3,5;2,4,6;7,9,11],如图所示。2、然后在键盘中回车后,得到矩阵A如图所示。3、接着在命令窗口输入B=A(:),如图所示。4、最后在键盘中回车后,得到矩阵B,将矩阵A的所有元素堆叠起来,如图所示就完成了。

matlab中怎样提取矩阵里的某一个元素
提取某个数。具体谁优先,试一下不就知道了。括号里面是一个数的话,是按首列第一个向下取的,然后第二列……另外附加一个提取矩阵数字的方法(自己推出来的)

广南县15743987376: MATLAB如何在坐标矩阵中提取一定范围的点的坐标 -
逯刻复方: 设你的数据是a,则程序可这样: x=a(:,1);y=a(:,2); [x1,xind]=find(x>=1&&x<=3); [y2,yind]=find(y>=2&&y<=5); y1=y(xind);x2=x(yind); x3=[x1;x2};y3=[y1:y2]; scatter(x3,y3)

广南县15743987376: matlab中如何提取边缘点坐标 -
逯刻复方: MATLAB提取边缘点坐标,在曲线上每隔几个像素或相同的距离采一个特征点,然后提取出边缘点坐标,方法如下:1 2 3 4 5 6 7 8 9 10 11%寻找像素为1的点 col为横坐标 row为纵坐标 [col,row]=find(I == 1);%在一定范围内筛选坐标 for(col=1:1024 ) for(row=1:768) if(col>374 & col<481 &row>146 &row<246) [col,row] %输出坐标 end end end

广南县15743987376: matlab画图时如何获取指定点的坐标值? -
逯刻复方: 1、以图中圆圈标注的部分为例,需要获取最高处的极值点坐标.2、首先运用放大功能将图中的曲线放大.3、当放大之后就能清楚地看到极值点了.4、接着用数据游标功能,在最大极值点上点击,就能拾取到了该最大极值点,其最大极值点坐标为(4,2.22*10^9).

广南县15743987376: matlab矩阵中元素坐标输出命令 -
逯刻复方: find

广南县15743987376: matlab中如何扫描矩阵获取坐标 -
逯刻复方: [r, c] = find(A==1); 返回的r和c分别是一个列向量,存储了每个1元素的行号和列号.

广南县15743987376: 如何随机提取matlab矩阵中一个元素的位置关于matlab矩阵
逯刻复方: 可以用随机数发生器 :)具体如下:data=randn(1000,1); %需要随机提取数据的矩阵randnum=randperm(length(data)); %随机产生矩阵位置outdata=data(randnum(1:100)); %可随机从data中提取100个数据以上供楼主参考 :)

广南县15743987376: 请问如何批量提取matlab矩阵中的元素并作为另一个矩阵的坐标? -
逯刻复方: 建议楼上的回答之前自己试一试,以免误人误己. 如果要提取矩阵元素,我能想出来的有三种方法,但如果要改变这些位置元素的值,我能想出来的只有一种方法.示例(为了与其它元素区别,赋值用NaN):% 生成测试数据 B = magic(5); B =...

广南县15743987376: 用matlab做了一个图形,想把图形中所有点的坐标提取出来然后保存到表格中以备论文使用,怎么才能做到呢? -
逯刻复方: 得看你是用什么得到的图,要是用工具箱的不好提取,要是用编程 用plot得到的图,那些数据就在工作空间里,直接保存就能得到.mat的文件

广南县15743987376: matlab中,我想读取到那个峰值点的坐标,如何读取?如果让它的坐标显示在图像上,怎么做?求大神帮我 -
逯刻复方: 有数据的话,用max和find函数就可以了.设竖轴的数据为z,则1[r,c]=find(z==max(z(:))) 可以得到最大值所在行和列的序号r和c,再进一步用来对x、y轴数据进行索引即可.

广南县15743987376: MATLAB图像处理 怎样得到图像上点的坐标及两点间的距离(图像上就两个点,没有其他图形
逯刻复方: [x y]=ginput(2)采集两点坐标,存在2*2矩阵中,在用两点距离公式计算就可以了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网