matlab - 如何从matlab中的矩阵中删除特定值
问题描述
我有 420x700 的图像矩阵,我想删除每一行中的一个特定值,改变图像尺寸。这就像从中删除一列,但不是直线,成为 420x699 图像。我应该将删除值之前的值保持水平,并将其之后的所有值移回 1 个位置。
RGB = imread('image.jpg');
I1 = RGB(:,:,1);
我怎么做?
解决方案
这是一个很好的问题,我想不出没有 for 循环的方法。
假设要从中删除一列M
的矩阵,以及每行要删除的元素的列索引的向量。nr-by-nc
R
nr-by-1
以下代码创建了一个新矩阵A
,其中“列”从中删除M
,向量B
中的元素已删除:
[nr,nc] = size(M);
A = zeros(nr,nc-1,'like',M);
B = zeros(nr,1,'like',M);
for k = 1:nr
r = R(k);
t = [ 1:r-1, r+1:nc ];
A(k,:) = M(k,t);
B(k) = M(k,r);
end
推荐阅读
- sql - 如何根据列和最新状态 SQL Server 显示计数
- laravel - Laravel 工厂
- python - 如何将排除标志添加到 Python git
- amazon-web-services - 如何在 java 代码中使用 DefaultAWSCredentialsProviderChain() 从实例配置文件中获取凭证并允许访问 s3 存储桶
- unity3d - SceneManager.LoadScene 在 Unity 中测试时工作正常,但在部署到 Oculus Quest 时却不行
- c++ - 在 clion 中使用 MSVC 工具链时无法调试“iostream”相关代码
- java - 首先,我想将数组转换为 Arraylist 或任何集合,并从该集合中获取最大大小
- php - 如何在每个表格行中突出显示较大的值?
- cloud-object-storage - 无法在 IBM Cloud 中的轻量帐户上创建云对象存储
- c++ - 如何使用内部函数 C++ 将 3 个加法和 1 个乘法转换为矢量化 SIMD