matlab返回数组下标,matlab 如何按一定概率取数组中的值,matlab 如何取函数返回数组的某个值...

导航:网站首页 >

matlab 如何按一定概率取数组中的值,matlab 如何取函数返回数组的某个值

matlab 如何按一定概率取数组中的值,matlab 如何取函数返回数组的某个值

匿名网友:

思路是:你先产生100个随机数,然后看每一个随机数到底在哪个范围内把0到1分为0到0.7、0.7到0.85、0.85到0.95、0.95到1四个区间,每个区间将对应一个数,然后给A赋值。

程序为:A=zeros(1,100);x=rand(1,100);A(find(x<0.7))=1;A(find(x>=0.7))=2;A(find(x>=0.85))=3;A(find(x>=0.95))=4;祝你学习愉快!

匿名网友:

数组很大,运算速度很慢,可以提出所有大于0的值一起运算,得到的值再放回原位么? 对于这一问,可以采用逻辑下标,对大的数组可以有效地提高处理速度。

比如数组或矩阵为A,10行20列,其中有3个元素大于0,具体位置未知. index_positive = A>0;这样得到的index_positive 是这些元素的逻辑下标,index_positive是一个与A相同大小的10行20列的0,1值数组,只有那三个元素的位置上,值是1. 然后 B=A(index_positive)就得到了这三个元素的值。

然后对B里的元素进行需要的运算。

最好是相同的或有规律的,比如所有元素乘以2,那么就是C=2*B;或者第1个元素*1, 第2个元素*2等,这时可以D=1:3; C=B .* D; 。

如果每一个要进行不同的运算,那这里只有对B进行循环。

最后要把C放回原位,用A(index_positive)=C;就可以了。

对于一个1000*1000的数组矩阵,这个方法的速度提高是很可观的。

原因在于它使用C语言实现了循环,而for循环是用matlab语言实现的,判断循环条件的时候大大消耗了时间。

匿名网友:

%给你个程序参考,中值滤波效果不一定好,你可以依据你的数据进行改进:clc;clfclear all%载入数据 test1.mat 数据文件load('test1'); % 也可以直接定义: test=1 2 ……% test1 数组长度n1=size(test1,1);x1=1:n1;test1=test1(x1);figure(1)plot(x1,test1,'b-')title('test1的原始数据图')%中值滤波法滤除噪声figure(2)w=7; %取窗口值为7,可自己设置其它的值试试看效果for i=1:n1-wv=i:i+w-1;%取滑动窗口的元素向量%将窗口中元素排序qr=sort(test1(v));%取排序后的中间元素me=qr(fix(w/2)+1);end%画图plot(x1,test1)title('test1的滤波后数据图')%设置图形的轴限,观察后设置的,便于对比axis(0,100,0,100)

匿名网友:

1. 首先,MATLAB自带很多生成满足一定分布的随机数的函数,例如:rnd:服从0~1的均匀分布U(0,1)。

randn:服从标准正态分布N(0,1)。

exprnd(MU):服从参数为MU的指数分布。

等等,这些都是最基本的。

2. 如果要生成除上面这些之外的随机数,需要严密的数学推导,利用这些分布进行构造,例如a+b*randn就是服从N(a,b),这些都可以在概率论的书上找到他们之间的联系。

如果推导不出,还可以利用大数定律进行生成,通过一组随机数确定一个随机数的方式。

匿名网友:

the following is a simple example showing you that you have full freedom:>> a=magic(5)a =17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9>> b=a(1:3,1:3)b =17 24 123 5 74 6 13>> b=a(1:3,1 3 5)b =17 1 1523 7 164 13 22>> b=a(1 2 4,1 3 5)b =17 1 1523 7 1610 19 3you can even try:>> c=randint(3,3,sum(size(a)))+1c =10 9 75 6 95 3 1>> b=a(c)b =18 12 511 24 1211 4 17where you know matlab count element in matrix column by column, for example, in this 2D 5x5 matrix, a(10)=a(5,2)

匿名网友:

不是一个点,具体的意思就是,x是从0到8,每个x值都有对应的y值,现在我要取五个沿着x轴移动的点每次移 ...每次移动的距离是0.5,这五个点之间的间隔是1?% 2017年5月7日13:58:10clear;clc;clfx=0 2 3 4 8;y=3 4 8 9 11;plot(x,y,'R-S')hold onP=polyfit(x,y,3);% XX=1,2,3,4,5;XX=2:0.5:4;YY=polyval(P,XX);plot(XX,YY,'k-O')

问题推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值