matlab查找元素在矩阵中的位置

这篇具有很好参考价值的文章主要介绍了matlab查找元素在矩阵中的位置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

find

A为矩阵或向量, n为待查的某个数或向量.  A n不能同为向量
[x,y] = find(A == n)  %  x,y分别为n所在的行和列
index = find(A == n)   % index为返回的按列存储位置 [H,W] = size(A)  index = (y - 1) * H + x
% n为行/列向量时,要求其长度等于A的行/列长度.  除了==, 还支持> <等比较 

%% demo
A = reshape(1:6,2,3)
%% 1
n = 3;
index = find(A == n)
[x,y] = find(A == n)
index = find(A == 8)
%% 2
n = [1 2 3]; % [1 2 5] 测试此二例
[x,y] = find(A == n);
n = [1 2];
[x,y] = find(A == n); % error, 长度不等
n = [1;2];
[x,y] = find(A == n);

%% 3
[x,y] = find(A(1,:),n); % error, 不能同为向量  A为向量时,n需为标量

ismember

A为任意维度的矩阵, B为待查的元素,可以任意维度的矩阵.  ismember(B,A)
[~,id] = ismember(3,3)  % A B 同为标量  ~为逻辑值,1 或 0
[~,id] = ismember(1:6,3)  % 对比下个指令
[~,id] = ismember(3,1:6)  
% ismember最常见应用在于判断某向量或矩阵B是否为矩阵A的子集
A = reshape(1:18,6,3);
B = reshape(1:6,2,3);
[~,id] = ismember(B,A,'rows');  % 对比下个指令
[~,id] = ismember(B,A)  % 当指定参数'rows'时,将行向量看作整体进行判断,且要求A B的列数相等. 未指定参数'rows'时,则逐个元素判断.

问题在于如果B是A的真子集时,如何方便高效判断B是否为A的一部分, 笔者给出如下方案. 如果B为A的重复子部分,需对结果进行保存.欢迎大家批评指正:

A = reshape(1:30,6,5);
B = A(2:4,2:4);
[HA,WA] = size(A);
[HB,WB] = size(B);
temp = B(1,:);
cols = [];
for i = 1:WA - WB + 1
    if (ismember(temp,A(:,i:i+WB-1),'rows'))
        [~,rows] = ismember(B,A(:,i:i+WB-1),'rows');
        cols = i:i+WB-1;
        break  %  或者对结果进行保存, 再接着扫描
    else
        continue
    end
end
rows
cols

matlab查找元素在矩阵中的位置文章来源地址https://www.toymoban.com/news/detail-507728.html

到了这里,关于matlab查找元素在矩阵中的位置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python查找列表元素位置、个数、索引的方法

    引言:本文整理了python 查找列表元素位置、个数、索引 的方法(大全),主要内容包括 一、index()方法查找列表元素、 二、count()统计列表元素个数、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧。         在列表操作中查找列

    2024年02月11日
    浏览(33)
  • 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)

    二分查找到目标值然后左右找到坐标 问题在于:找左右坐标的时候时间复杂度不是 O(logN) 之前提到过二分查找不仅可找到相等的数值,更关键的是 它可以将数组分为截然不同的两种情况 ,因此我们可以借助这个性质找到 第一个大于等于 target 的值(左下标) 和 第一个大于

    2024年01月22日
    浏览(36)
  • 二分查找:34. 在排序数组中查找元素的第一个和最后一个位置

    个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C++》《算法》 本篇文章仅是作为小白的我的一些理解,,如果有错误的地方,希望大佬们指出。 题目链接: 34. 在排序数组中查找元素的第一个和最后一个位置 本题数组元素不唯一,可能存在多个target,我们就是

    2024年02月08日
    浏览(37)
  • 二分查找实例1(在排序数组中查找元素的第一个和最后一个位置)

    给你一个按照非递减顺序排列的整数数组  nums ,和一个目标值  target 。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值  target ,返回  [-1, -1] 。 你必须设计并实现时间复杂度为  O(log n)  的算法解决此问题。 示例 1: 示例 2: 示例 3: 提示

    2024年02月09日
    浏览(32)
  • 数据结构:图文详解顺序表的各种操作(新增元素,查找元素,删除元素,给指定位置元素赋值)

      目录 一.顺序表的概念 二.顺序表的实现 新增元素 默认尾部新增 指定位置添加元素 查找元素 查找是否存在 查找元素对应的位置 查找指定位置对应的元素 删除元素 获取顺序表长度 清空顺序表 在线性数据结构中,我们一般分为俩类:顺序表和链表         顺序表是一

    2024年02月05日
    浏览(49)
  • 34. 在排序数组中查找元素的第一个和最后一个位置

    难度:中等 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1: 输入:nums = [5,7,7,8,8,

    2023年04月15日
    浏览(32)
  • 34.在排序数组中查找元素的第一个和最后一个位置

    给你一个按照非递减顺序排列的整数数组 nums ,和一个目标值 target 。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target ,返回 [-1, -1] 。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1: 示例 2: 示例 3: 提示: 0 = n

    2024年01月16日
    浏览(32)
  • 84.在排序数组中查找元素的第一个和最后一个位置(力扣)

    目录 问题描述 代码解决以及思想  知识点  初始化左边界 left 为数组的起始位置(0),右边界 right 为数组的结束位置( nums.size() - 1 )。 进入一个循环,只要左边界 left 不大于右边界 right ,就执行以下操作: a. 计算中间位置 middle ,这是为了进行二分查找,以避免整数溢

    2024年02月06日
    浏览(33)
  • 在排序数组中查找元素的第一个和最后一个位置——力扣34

    题目描述 法一 二分查找

    2024年02月14日
    浏览(44)
  • LeetCode 34 在排序数组中查找元素的第一个和最后一个位置

    在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums ,和一个目标值 target 。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target ,返回 [-1, -1] 。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此

    2024年02月02日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包