matlab中,我有一组数据16个值,如何定义并且得到任意两个数相减的值,比如得到第16个数减去第2个数的值

如题所述

楼主应该是想要从16个数中任取2个相减吧?

 

这是一个16取2的组合问题:

A=rand(16,1);          % 生成测试数据
idx=nchoosek(1:16,2);  % 16取2的组合
diff(A(idx),1,2);      % 利用diff函数求两数相减

 

如果考虑相减的顺序,应再对每次取出的两个数做排列,其实也就是把上面的结果取负号:

-diff(A(idx),1,2);     % 交换减数和被减数的位置

追问

不好意思可能是我表达不够清楚,其实是我有一组做出来的数据,共十六个数,我需要用得出的数据的第16个数减去第15个,然后15-13,13-11,11-9,9-6,6-4,4-2,2-1,1-3,3-5,5-7,7-8,8-10,10-12,12-14,14-16得到新的一组数据。。。可以实现吗?

追答

哪个减哪个好像没有什么规律啊?

看来只能直接罗列出来了:

idx1=[16 15 13 11 9 6 4 2 1 3 5 7 8 10 12 14];
idx2=[15 13 11 9 6 4 2 1 3 5 7 8 10 12 14 16];
A(idx1)-A(idx2)

追问

再多麻烦您一下啦,这个输入16个数怎么输入呢,不好意思哈这方面确实有点小白,或者您有qq方便的话问您一下,我得到的现有数据是以空格分开的十六个数

追答

这个输入16个数怎么输入】?

抱歉,我没看懂你的要求。另,我不挂Q。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-22
不妨假设这组数据16个值是随机产生的,如下的数据A。
A=10+fix(rand(1,16)*100) %随机产生16个二位整数
x=fix(rand(1)*16) %随机产生1个1-16的整数x
y=fix(rand(1)*16) %随机产生1个1-16的整数y
B=A(x)-A(y) %将系 x,y作为矩阵A中元素的序号,求A中对应序号的元素之差。

看这样可以不?追问

不好意思可能是我表达不够清楚,其实是我有一组做出来的数据,共十六个数,我需要用得出的数据的第16个数减去第15个,然后15-13,13-11,11-9,9-6,6-4,4-2,2-1,1-3,3-5,5-7,7-8,8-10,10-12,12-14,14-16得到新的一组数据。。。可以实现吗?

相似回答