gpt4 book ai didi

matlab - 在 MATLAB 中不使用 for 循环将特定矩阵位置替换为数组值

转载 作者:行者123 更新时间:2023-12-02 05:59:58 24 4
gpt4 key购买 nike

我能知道如何在不使用 MATLAB 循环的情况下替换特定矩阵位置的值吗?我初始化矩阵 a,我想为每个 no 替换它在指定行和列上的值。这必须在 num for 循环中完成几次。 num for 循环在这里很重要,因为我想更新原始代码中的值。

真正的代码比较复杂,我简化了这道题的代码。

我有如下代码:

a = zeros(2,10,15);



for num = 1:10

b = [2 2 1 1 2 2 2 1 2 2 2 2 1 2 2];
c = [8.0268 5.5218 2.9893 5.7105 7.5969 7.5825 7.0740 4.6471 ...
6.3481 14.7424 13.5594 10.6562 7.3160 -4.4648 30.6280];

d = [1 1 1 2 1 1 1 1 1 1 3 1 6 1 1];

for no = 1:15
a(b(no),d(no),no) = c(1,no,:)
end

end

例如 no 13 的示例输出如下:

a(:,:,13) =

Columns 1 through 8

0 0 0 0 0 7.3160 0 0
0 0 0 0 0 0 0 0

Columns 9 through 10

0 0
0 0

非常感谢您提供的任何帮助。

最佳答案

可以使用 sub2ind 来完成,它将 subs 转换为线性索引。按照你模糊的变量名,它看起来像这样(省略 num 上的无用循环):

a = zeros(2,10,15);
b = [2 2 1 1 2 2 2 1 2 2 2 2 1 2 2];
d = [1 1 1 2 1 1 1 1 1 1 3 1 6 1 1];
c = [8.0268 5.5218 2.9893 5.7105 7.5969 7.5825 7.0740 4.6471 ...
6.3481 14.7424 13.5594 10.6562 7.3160 -4.4648 30.6280];

% // we vectorize the loop over no:
no = 1:15;
a(sub2ind(size(a), b, d, no)) = c;

关于matlab - 在 MATLAB 中不使用 for 循环将特定矩阵位置替换为数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28942652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com