如何利用索引向量提取向量指定元素并赋值给多个变量?
搞定向量索引赋值的小问题
哈哈,这个坑我之前也踩过!直接写[i, j] = v(u)确实跑不通,因为v(u)返回的是一个1×2的向量,MATLAB没办法自动把这个向量拆成单个值分给i和j。给你两种好用的解决办法,看你需求选:
方法一:直接逐个索引(简单直白,适合固定2个索引的情况)
要是你的索引向量u就固定是两个元素,直接分别取对应位置的元素最省事,代码一眼就能看懂:
v = [11, 12, 13, 14, 15]; u = [3, 5]; i = v(u(1)); % 拿到第3个元素13 j = v(u(2)); % 拿到第5个元素15
方法二:用deal函数批量分配(更灵活,适合索引数量可能变的场景)
如果以后u里的索引数量可能增加,或者想一次性给多个变量赋值,可以用num2cell把向量转成单元格数组,再配合deal函数来分配:
v = [11, 12, 13, 14, 15]; u = [3, 5]; [i, j] = deal(num2cell(v(u)){:});
这里的逻辑是:先把v(u)得到的[13,15]转成单元格数组{13,15},再用{:}把它展开成逗号分隔的两个值,最后deal就会把这两个值分别塞给i和j啦。
内容的提问来源于stack exchange,提问作者masec
相关产品推荐
相关产品推荐

