Matlab中怎么找到矩阵中的某一个数,把它提到最前面重新排列?

Matlab中,在矩阵中找到0的位置,然后把0放在最前面,后面的数字依序排列:例如矩阵A=[2 3 9 4 0 5 7 6 8 1],改后变为A=[0 5 7 6 8 1 2 3 9 4],这段代码应该怎么写?

如何在矩阵A中找到0的位置,然后把0放在最前面,后面的数字依序排列?

改问题实际上就是查找、提取、排序问题,此问题可以这样来解决。

1、使用find函数,在矩阵A中查找0的位置;即

[m,n]=find(A==0); %m是行的位置,n是列的位置

2、提取含0以后的数据并赋值给A2,提取0以前的数据并赋值给A1

3、排序,B=[A2,A1],将0以后的数据放在首位,然后再0以前的数据排在后面

4、执行代码

A=[2 3 9 4 0 5 7 6 8 1]

[m,n]=find(A==0);

A1=A(m,1:n-1);

A2=A(m,n:end);

B=[A2,A1]

5、执行结果

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-30

num1=1;  num2=1;

B=[];

for i=1:length(A)

    if A(i)==0

        num1=i;

    end

for i=num1:length(A)

    B(num2)=A(i);

    num2=num2+1;

end

for i=1:num1-1

    B(num2)=A(i);

    num2=num2+1;

end

A=B;

自己写的,满意请采纳~,有问题可以追问。

第2个回答  2020-04-30
唔,最笨的,就是用for遍历矩阵的每个数并与0作比较,if相同,就再for一遍把之前每个数替换成新的数。
聪明点的话,可以直接把所有==某数的元素统计个数并删掉,再建个包含同样个数的矩阵与原矩阵合并。
相似回答