
后面这部分是要把y中的内容一个一个取出来以后判断是否在2/5和3/5之间,如果是的话b就加1么?如果是这样的话,可以这样写:
for
i=1:length(y)
a=y(i);
if
a>2/5&a<3/5
b=b+1;
end
end
可以利用sort函数给数列a从小到大排列,找前几个最大的。如下:
[b,i]=sort(a)。b为从小到大的数字,i为对应位置。要找前3个,如下输入:
>>
a=[3,15,6,21,18,2,18,19,1,4,7,29,
21
,23
,29
,23,
14,
6,
9
,29
,31];
>>
[b,i]=sort(a)
b
=
columns
1
through
12
1
2
3
4
6
6
7
9
14
15
18
18
columns
13
through
21
19
21
21
23
23
29
29
29
31
i
=
columns
1
through
12
9
6
1
10
3
18
11
19
17
2
5
7
columns
13
through
21
8
4
13
14
16
12
15
20
21
>>
b(19:21)
ans
=
29
29
31
>>
i(19:21)
ans
=
15
20
21
N=100;u0=05;p0=05;
u=rand(N,1);
p=rand(2N,1);
for i=1:N
e(i) = mean((abs(u-u0)/u0-abs(p(1+i:N+i)-p0)/p0)^2);
end
m=1:N;
plot(m,e);
xlabel('m');
ylabel('E_m');
a = randint(1,10,[0 3])
b = dec2bin(a,3);
b(:,1) = ' ';
c = reshape(b',1,[])
num0 = length(find(a==0));
num00 = length(regexp(c,'00'));
num1 = length(find(a==1));
num01 = length(regexp(c,'01'));
num2 = length(find(a==2));
num10 = length(regexp(c,'10'));
num3 = length(find(a==3));
num11 = length(regexp(c,'11'));
[num0 num1 num2 num3;num00 num01 num10 num11]
a =
0 1 2 1 2 0 0 3 3 3
c =
00 01 10 01 10 00 00 11 11 11
ans =
3 2 2 3
3 2 2 3
程序如下:
close all;clear;clc;
%下面是从txt中读取数列,如果是自己已经输入,可以直接从下面注释掉的语句开始
b = fopen('datatxt','r');
a = fread(b,'char');
a = a';
fclose(b);
%a = '0101011010100101010101001010010';
[st1,ed1] = regexp(a,'00','start','end'); %st1,ed1分别由数列中00出现的开始位置和结束位置生成的矩阵
[st2,ed2] = regexp(a,'01','start','end'); %类上
[st3,ed3] = regexp(a,'10','start','end'); %类上
[st4,ed4] = regexp(a,'11','start','end'); %类上
[cs] = [length(st1) length(st2) length(st3) length(st4)]; %'00''01''10''11'出现次数也就是它们对应st或者ed的矩阵长度;所以cs就是它们出现次数集合
这个是我现学现写的程序,不知道好不好,你自己试试
我的数列是 0101011010100101010101001010010
结果是 cs =
3 13 13 1
以上就是关于matlab 行数列用循环提取。全部的内容,包括:matlab 行数列用循环提取。、matlab中对一个数组求最大的几个数、matlab 求解数列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)