帮忙解释下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)
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/27 21:55:25
![帮忙解释下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)](/uploads/image/z/2105057-65-7.jpg?t=%E5%B8%AE%E5%BF%99%E8%A7%A3%E9%87%8A%E4%B8%8Bmatlab%E7%A8%8B%E5%BA%8Ffunction+d+%3D+dsc%28c%29%25%E8%BE%93%E5%85%A5%E6%98%AF%E4%B8%80%E4%B8%AA%E4%B8%80%E7%BB%B4%E6%95%B0%E5%88%97%2C%E5%87%BD%E6%95%B0%E5%AE%9E%E7%8E%B0%E5%B0%86%E6%95%B0%E5%88%97%E4%B8%AD%E8%BF%9E%E7%BB%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%8E%BB%E9%87%8D%2C%E7%84%B6%E5%90%8E%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%25%E4%BE%8B%E5%A6%82%2C%E8%BE%93%E5%85%A5%5B1+2+2+2+3+3%5D%2C%E8%BE%93%E5%87%BA%5B1+2+3%5Da+%3D+diff%28c%29b%3D%5Ba%7E%3D0%5Dx+%3D+c%28b%29d%3D%5Bx%2Cc%28length%28c%29%29%5D%3Bend%E4%B8%BB%E8%A6%81%E6%98%AF+x+%3D+c%28b%29)
帮忙解释下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.