帮忙解释下matlab程序function d = dsc(c)%输入是一个一维数列,函数实现将数列中连续重复的数去重,然后输出结果%例如,输入[1 2 2 2 3 3],输出[1 2 3]a = diff(c)b=[a~=0]x = c(b)d=[x,c(length(c))];end主要是 x = c(b)
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/31 15:41:20
帮忙解释下matlab程序function d = dsc(c)%输入是一个一维数列,函数实现将数列中连续重复的数去重,然后输出结果%例如,输入[1 2 2 2 3 3],输出[1 2 3]a = diff(c)b=[a~=0]x = c(b)d=[x,c(length(c))];end主要是 x = c(b)
帮忙解释下matlab程序
function d = dsc(c)
%输入是一个一维数列,函数实现将数列中连续重复的数去重,然后输出结果
%例如,输入[1 2 2 2 3 3],输出[1 2 3]
a = diff(c)
b=[a~=0]
x = c(b)
d=[x,c(length(c))];
end
主要是 x = c(b) 这句没看懂,
我又试了试,发现一个问题,用例子说下吧:
1、在命令窗口运行:
c = [1 2 2 2 3 3 1]
b = [1 0 0 1 0 1]
c(b)
enter会报错“Subscript indices must either be real positive integers or logicals.”
2、给c、b赋值后,
运行 b = [b~=0],再运行c(b)就能出正确结果.
我不明白为什么这样可以,我觉得唯一的区别就是1是数值,2是逻辑值,是c(b)运算一定要对逻辑值进行吗?运算的原理或者内在运行步骤是什么呢?
帮忙解释下matlab程序function d = dsc(c)%输入是一个一维数列,函数实现将数列中连续重复的数去重,然后输出结果%例如,输入[1 2 2 2 3 3],输出[1 2 3]a = diff(c)b=[a~=0]x = c(b)d=[x,c(length(c))];end主要是 x = c(b)
c(b)的用法在matlab中有两种:
1.b是普通数组,那么将b作为下标数组,对c数组相应下标元素进行操作.注意此时b中元素必须大于0,因为matlab中数组的下标从1开始.
2.b是逻辑数组,即其元素是逻辑1或逻辑0,这时让c(b)=12即是给c中对应于b逻辑1位置的元素赋值12.