1个回答
展开全部
a=[6 2 3 2;9 8 3 1;0 7 6 4;2 3 5 7];%原矩阵a
b=zeros(size(a));%b为中间矩阵,大小与a相同
c=[1;4;3;2];%新的排列顺序
%b(1,:)=a(c(1),:);b(2,:)=a(4,:);b(3,:)=a(2,:);b(4,:)=a(3,:);]
for i=1:size(c)
b(i,:)=a(c(i),:);
end
a=b
b=zeros(size(a));%b为中间矩阵,大小与a相同
c=[1;4;3;2];%新的排列顺序
%b(1,:)=a(c(1),:);b(2,:)=a(4,:);b(3,:)=a(2,:);b(4,:)=a(3,:);]
for i=1:size(c)
b(i,:)=a(c(i),:);
end
a=b
追问
还有一个问题,想请你看看:
有一个一维矩阵a=[1,2...,102]
其中第2列到第101列是随机生成的,是2->101之间的不重复的整数。
现在我想要实现将a中的所有大小属于[50,70]之间的元素按照从小到大的顺序排列
其它的不变。不知道如何实现啊?matlab程序。谢谢
追答
clear
clc
a=1:102;%这里的a是我随便取的,你改成题目中的a
c=zeros(1,21);%c的大小为21,因为c要存储50到70之间的共21个数在a中的顺序
d=c;%d要存储在a中的50-70的数字(其实没必要,因为题中50-70的数字必出现且只出现一次)
j=1;
for i=1:102
if a(i)>=50&a(i)<=70
c(j)=i;%取出50-70之间数字的位置
d(j)=a(i);%取出50-70之间的数字,
j=j+1;
end
end
sort(d,1);%sort用法自己百度,其实在本题中不需要排序,直接按照50--70的顺序就好了
for k=1:21
a(c(k))=d(k);%将50-70送入a中,顺序在c中
end
a
%程序我运行了,应该没问题,你再看看
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询