You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用索引向量提取向量指定元素并赋值给多个变量?

搞定向量索引赋值的小问题

哈哈,这个坑我之前也踩过!直接写[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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:23:41