MATLAB如何取数组中非零的最小值,数组里面都是正数。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB如何取数组中非零的最小值,数组里面都是正数。相关的知识,希望对你有一定的参考价值。

例如一个数组:F=[0 0 0 7 10 20 50 88],要输出数组F中的最小非零值,即7,如何做到?

代码如下:

a=magic(6);

disp(a)

for i=1:1:6  

    B=a(i,:);

    disp(B)

    [b,ind]=min(B(find(B~=0)));

        disp(b)

        disp(ind)

   for j=1:1:6

        c=100;

        disp(c)

   end

end

扩展资料

Matlab中数组元素引用有三种方法:

1、下标法(subscripts)

2、索引法(index)

3、布尔法(Boolean)

注意:在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样)。

Matlab的存储顺序就是说先行后列,对于3维数组,就是先行后列再页。

下标法引用:

A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end”

这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如

A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素;

A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列;

A(1,end-1)表示引用第1行倒数第2个元素;

A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素。

参考技术A 数组很大,运算速度很慢,可以提出所有大于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语言实现的,判断循环条件的时候大大消耗了时间。
参考技术B F=[0 0 0 7 10 20 50 88];
min(F(find(F~=0)))本回答被提问者采纳

js中如何快速获取数组中的最大值最小值

参考技术A 我 来给出一种吧:

var a = new Array(1, 2, 3, [4, 5, [6, 7]]);

var b = a.toString().split(',').sort();

alert(b.pop()); //最大值

alert(b.shift());//最小值本回答被提问者和网友采纳

以上是关于MATLAB如何取数组中非零的最小值,数组里面都是正数。的主要内容,如果未能解决你的问题,请参考以下文章

matlab数组中如何找某个值的坐标

matlab数组中如何找某个值的坐标

Javascript 如何取最大值?

算法练习——和最接近于零的子数组

java如何在数组中取最大值和最小值

JAVA作业,找出一个数组中非零最小正整数