matlab去掉矩阵中为零的点
来源:学生作业帮助网 编辑:作业帮 时间:2024/10/06 08:13:02
A(:,1)='1:';再问:不行的再答:用结构矩阵或者单元矩阵试试吧.
直接把矩阵展开写成A=(a11a12……a1na21a22……a2n………………an1an2……ann)然后直接把A’写出来直接乘在一起,关注主对角线上的元素就可以了
[row,col]=find(R=0);%row,col是所有非零元素的横坐标和纵坐标num=size(row,1);%有多少个非零元素fori=1:numR(row(i),col(i))=1;%非零
a=[1230;4560;7890;4506];fori=1:length(a)ifa(i)~=0a(i)=1/a(i);elsea(i)=0;endenda
不知道你有没有发现,y值时每12一个循环,从1到144呢?[x,y,z]=find(A)函数只能查找二维的x,y值,z是所有的不是0的元素的数组.要知道角标,用个循环,每个循环查找一个平面的非0元素即
[tmp I] = unique(b(:,1), 'first');c = b(I,:);
对矩阵a:a(find(a==0))=NaNmin(a)
A=zeros(1,24);B=ones(1,25);A=B(2:25)如此即可,冒号的意思是从第2个元素到第25个.
%考虑到矩阵数量较多,用元胞数组处理较有通用性.p=2;%相同矩阵的数量,或者在输入完元胞数组后p=length(A)m=3;n=3;%矩阵的行列数A{1}=[223;050;101];%矩阵数据均存
a((a>=-1&a
这个问题问的有点问题.如果是一维的,a(a==0)=[]就能解决问题如果是多维的,a(a==0)=[]会把a变成一维的,然后结果类似于上面的结果.原因是每行每列中的0的个数不同,无法保持多维的样子,只
X=zeros(m,n)%生成m行n列的零矩阵.希望能解决你的问题!
A=[0,1,31,2,21,2,12,2,22,1,3]A=013122121222213>>A(find(A(:,3)>2),:)=[]A=122121222
就是把s与r排列到一起就相当于在r矩阵后面加了一个s矩阵扩大了r的列数
A=[1234;2460;3505;40-10;];B1=A(:,[12]);B1((A(:,2)==0),:)=[];B2=A(:,[13]);B2((A(:,3)==0),:)=[];B3=A(:
可以简化一下Bpz(Bp>0)=Bp(Bp>0)
a=uint8([1234;2123;3342;4123]);b=uint8([2121;2345;7954;7867]);c=complex(a,b)c=1+2i2+1i3+2i4+1i2+2i1+
fori=1:m%%%%%%%%m行forj=1:n%%%%%%%%n列ifA(i,j)=0deleteA(i,;)endendend
matlab提供了很好的集成模块,上面的方法太麻烦!那是c语言的思想.最最简单和便捷的方法:设矩阵AA(:,find(sum(abs(A),1)==0))=[];搞定!哈哈.WindEnchanter
d=zeros(3);forki=1:3forkj=1:3d(ki,kj)=x(ki)+y(kj);endend注意matlab里的索引是从1开始的.