matlab 删除行或列时出现:矩阵索引超出删除范围 问题的解决和新思路
删除某些行或者某些列
有时候我们需要将读取的.xlsx文件中的某些列或者某些行进行删除,比如存在以下的数据,需要删除第一列相同的前i-1行元素,如下面的第3行。
原程序
A=xlsread('shunxu_data.xlsx');
K = A(:,1);
num = length(A)
for i = 1:num-1if K(i) == K(i+1) A(i,:) = [];end
end
xlswrite('new.xlsx',A,'A:G');
但是这样处理的话会报错:
但是显示A(i,:)的话并无任何问题。
经过反复研究,得到问题的原因是:每循环一次,就会删除了一行,这样新的i与原来的i就不一样,也就是存在多组需要删除的数据的话,A(i,:) = [];会导致需要索引的i>仅存的长度。
比如:共有100行,需要删行i=71的数据,在删除了第30行之后,总的数据就只有70行,要删除71行的数据,就无法索引,即“矩阵索引超出删除范围”。
解决方法1
可以设定一个新的矩阵,将符合要求的数据写入新的矩阵,既避免了删除数据的问题,而且写操作也快与删操作。
解决方法2
为了防止在删除i遍历时与i有关的数据会出现的问题,我们可以统一操作,将需要删除的数据全部改写为新数据,比如[1 1 1 1 1 1],这样删除[1 1 1 1 1 1]的数据就不会收到变量i 的影响,就不会存在超出索引范围的问题。
最后的程序
A=xlsread('shunxu_data.xlsx');
K = A(:,1);
num = length(A)
t=1;
for i = 1:num-1if K(i) == K(i+1) %直接删除会导致A(i,:)会超出索引范围A(i,:) = [1 1 1 1 1 1 1];endif A(i,:) ~= [1 1 1 1 1 1 1]data(t,:)=A(i,:)t = t+1;end
end
xlswrite('newRGB50_200.xlsx',data);
matlab 删除行或列时出现:矩阵索引超出删除范围 问题的解决和新思路相关推荐
- matlab 矩阵索引超出删除范围,matlab图像索引超出范围怎么?
21.MATLAB支持的几种图像文件格式: ⑴JPEG(Joint Photogyaphic Expeyts Group):一种称为联合图像专家组的图像压缩格式. ⑵BMP(Windows Bitma ...
- Qt删除文件夹时父文件夹一并删除的原因与解决办法
Qt删除文件夹及子文件夹全部文件时父文件夹一并删除的原因与解决办法 初学Qt文件操作,总会先去查阅各种资料,参考各种代码然后一点点地去调试. 我在编写"删除文件夹及子目录与所有文件" ...
- 运行差分灰狼时出现 关于“索引超出数组元素的数目(0)和矩阵维度问题以及图例的问题”的解决办法
问题一:索引超出数组元素的数目(0) 看截图,上面注释掉的libsvmpredict是出错的, 下面一句是修改后的. [~,~,fitness]=libsvmpredict(output_test,i ...
- matlab车牌识别毕设论文,MATLAB小白一个,毕设做一个基于MATLAB的车牌识别系统,出现索引超出矩阵维度的错误。主函数和自定义函数都写出来了(书上找的),希望大神帮助...
[fn,pn,fi]=uigetfile('AD.jpg','选择图片'); I=imread([pn fn]); figure, imshow(I); title('原始图像'); Im1=rgb2 ...
- Matlab中出现“位置1处的索引超出数组边界(不能超过1)”
我是一个matlab小白,前几天刚准备学习机器学习的相关知识,但是下面的代码一直提示我"位置1处的索引超出数组边界(不能超过1)". 好像出错在71行的"ans(j,:) ...
- matlab如何删除打开记录,matlab清除命令窗口时,如何显示确认删除的对话框?
显示到弹出框,应该能实现,但是,要显示什么内容,还要与实际程序相联系起来,请把程序代码粘贴出来看看www.mh456.com防采集. 在matlab的命令窗口,输2113入5261clc命令,即可清空 ...
- mysql索引0affected_mysql 创建索引和删除索引
索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引.删除索引可以利用ALTER TABLE或DROP INDEX语句来实现. ...
- mysql修改索引语句_mysql——创建索引、修改索引、删除索引的命令语句
查看表中已经存在 index:show index from table_name; 创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER ...
- mysql数据库如何创建索引,删除索引
写在前面:要想了解索引的底层以及优化索引的底层还得学习不同搜索引擎下对于数据的处理,后续我会出一些相关的文章介绍,比如什么是B+tree,什么是聚簇索引什么是二级索引.联合索引等,以及不同搜索引擎下( ...
最新文章
- SQL*Plus 说明
- python3 获取异常类型
- Ubuntu安装wps Linux版
- java 变量共享_java对象,共享变量
- div内容居中和布局居中样式总结
- 应届生去软通动力怎么样_直播回看!信通院/浪潮/软通智慧…金句频出,看看你错过了什么?...
- Oracle数据库被锁
- 摆脱剧荒!教你用 Python 一步步爬取豆瓣电影新榜单
- 将10位时间戳转换成字符串格式时间显示
- 测试UDP端口连通性
- 过滤器和拦截器的区别
- 机器人潘森护盾_新版潘森无伤抗塔 E技能护盾机制全解析
- Google Chrome浏览器导入导出书签
- win10系统计算机如何加密,win10系统自带加密使用的设置方法
- 《搞不定人,你如何带团队?》读书记录
- 高通处理器规格表(全2022)--转载
- 小米重返世界前五发布红米Note 5A,京东神预言小米复苏
- 机械革命无法使用U盘启动linux,机械革命如何用u盘装系统
- 道通转债,微芯转债,博22转债上市价格预测
- 数字与罗马数字之间转换