matlab编程现有一维数组a=[1 3 4 5 6 7 9 11 12 15 16 17 19 20]通过编程实现找出
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/05 22:58:56
matlab编程
现有一维数组a=[1 3 4 5 6 7 9 11 12 15 16 17 19 20]
通过编程实现找出a中三个及三个以上的连续数字,并输出,即输出[3 4 5 6 7][15 16 17]
要求不用循环
新手,程序尽可能简单
现有一维数组a=[1 3 4 5 6 7 9 11 12 15 16 17 19 20]
通过编程实现找出a中三个及三个以上的连续数字,并输出,即输出[3 4 5 6 7][15 16 17]
要求不用循环
新手,程序尽可能简单
a=[1 3 4 5 6 7 9 11 12 15 16 17 19 20];
b=(diff(a)==1);
ind1=find(diff([0 b])==1); %序列开始坐标
c=diff([0 b(end:-1:1)])==1;
ind2=find(c(end:-1:1))+1; %序列结束坐标
%输出
for ii=1:length(ind1)
if ind2(ii)-ind1(ii)>=2,disp(a(ind1(ii):1:ind2(ii)));end
end
再问: 你的程序非常好,不过我不知道采纳为满意还能不能追问,所以还没有点采纳,已经追加悬赏,麻烦你再费心…… 这个程序可移植吗?比如说我现在有一个非常庞大的数据,不过还是一维的,要求筛选180个以上的连续数据,需要修改以上程序的什么参数呢?帮我标记一下好吗?另外输出的数组能不能分别加上一个数组名呢?比如输出结果是m=[3,4,5,6,7]n=[15,16,17]以方便我继续调用
再答: 如果数组是多维的,例如data=[[ 2 3 4]; [5 10 11]; [1 3 7];] 你是要把它看做连续的一个数列,那么你只要 a=data(:); 那么a=[ 2 3 4 5 10 11 1 3 7], 就可以,这时候第一个输出序列为[ 2 3 4 5] 如果你每一行要分开单独看待,那么就要加入循环,每次只输入一行 第一个序列就只有[ 2 3 4 ],这样比较复杂一点 a=[1 3 4 5 6 7 9 11 12 15 16 17 19 20]; b=(diff(a)==1); ind1=find(diff([0 b])==1); %序列开始位置 c=diff([0 b(end:-1:1)])==1; ind2=find(c(end:-1:1))+1; %序列结束位置 mask=(ind2-ind1>=2);ind1=ind1(mask);ind2=ind2(mask);%删除长度2个一下的 %--------------------------------------------------------------------------------------------- %以上为获得数列起始位置 %以下为输出序列 num=length(ind1); m=cell(1,num); for ii=1:num m{ii}=a(ind1(ii):1:ind2(ii)); end 由于输出的数列长度不一样,这里设置m为cell类型来储存输出序列 使用时用m{1}返回第一个序列,m{2}返回第二个序列。
b=(diff(a)==1);
ind1=find(diff([0 b])==1); %序列开始坐标
c=diff([0 b(end:-1:1)])==1;
ind2=find(c(end:-1:1))+1; %序列结束坐标
%输出
for ii=1:length(ind1)
if ind2(ii)-ind1(ii)>=2,disp(a(ind1(ii):1:ind2(ii)));end
end
再问: 你的程序非常好,不过我不知道采纳为满意还能不能追问,所以还没有点采纳,已经追加悬赏,麻烦你再费心…… 这个程序可移植吗?比如说我现在有一个非常庞大的数据,不过还是一维的,要求筛选180个以上的连续数据,需要修改以上程序的什么参数呢?帮我标记一下好吗?另外输出的数组能不能分别加上一个数组名呢?比如输出结果是m=[3,4,5,6,7]n=[15,16,17]以方便我继续调用
再答: 如果数组是多维的,例如data=[[ 2 3 4]; [5 10 11]; [1 3 7];] 你是要把它看做连续的一个数列,那么你只要 a=data(:); 那么a=[ 2 3 4 5 10 11 1 3 7], 就可以,这时候第一个输出序列为[ 2 3 4 5] 如果你每一行要分开单独看待,那么就要加入循环,每次只输入一行 第一个序列就只有[ 2 3 4 ],这样比较复杂一点 a=[1 3 4 5 6 7 9 11 12 15 16 17 19 20]; b=(diff(a)==1); ind1=find(diff([0 b])==1); %序列开始位置 c=diff([0 b(end:-1:1)])==1; ind2=find(c(end:-1:1))+1; %序列结束位置 mask=(ind2-ind1>=2);ind1=ind1(mask);ind2=ind2(mask);%删除长度2个一下的 %--------------------------------------------------------------------------------------------- %以上为获得数列起始位置 %以下为输出序列 num=length(ind1); m=cell(1,num); for ii=1:num m{ii}=a(ind1(ii):1:ind2(ii)); end 由于输出的数列长度不一样,这里设置m为cell类型来储存输出序列 使用时用m{1}返回第一个序列,m{2}返回第二个序列。
matlab编程现有一维数组a=[1 3 4 5 6 7 9 11 12 15 16 17 19 20]通过编程实现找出
c语言求矩阵已知矩阵a=[1,2,3;4,5,6;7,8,9;10,11,12]通过vc一维指针形式编程 计算矩阵a的第
使用数组编程 按下列格式输出数字 1 3 6 10 15 2 5 9 14 4 8 13 7 12
编程实现:将数组a[6]={'a','b','c','d','e','f',}变成a[6]={'f','a','b','
java编程:编程从键盘输入一维数组 int a[20]中的20个整数,并求此数组元素的最大值、最小值、平均值及所
编程题:利用函数,将一个3行4列的二维数组a的每一列的最大元素放到一个一维的数组中.
若数组a中有十个整数8,2,5-3,7,-9,0,-4,10,15,请编程求出该数组中的最大值和最小值.(用C语言)
5.若数组a中有十个整数8,2,5-3,7,-9,0,-4,10,15,请编程求出该数组中的最大值和最小值.怎么错了?
用C语言指针数组编程实现:
编程输出下列矩阵:13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4
matlab编程实现一组数据中第一个、第4个、第7个相加,比如a=[1 2 4 6 7 8 4 2 6 34 7 78
一个matlab编程用于实现数组间的赋值,应该是程序有问题,谁会?