MATLAB 中的数组增广

问题描述 投票:0回答:1

我在Python中有以下代码:

import numpy as np
from scipy.io import savemat
states = np.array([[1,2,3,4,4,4,4,4],[5,6,7,8,8,8,8,8],[9,10,11,12,12,12,12,12],[2,2,2,2,2,2,2,2],[2,2,2,2,2,2,2,2],[2,2,2,2,2,2,2,2],[2,2,2,2,2,2,2,2],[2,2,2,2,2,2,2,2],[2,2,2,2,2,2,2,2],[2,2,2,2,2,2,2,2]])
states2_P = states.copy()
for j in range(2,np.shape(states2)[0]-2):
    if (np.mod(j,2)==0):
        # print(states.shape)
        states2_P[j,:] = (states[j-1,:]*states[j-2,:]).copy()
savemat('states.mat',{"foo": states})

我正在尝试在 MATLAB 中编写相同的代码:

close all;
clear all;
clc;
states = double(cell2mat(struct2cell(load('states.mat'))));
states2_M = states(:,:);
for i=3:size(X_aug,1)-1
    if mod(i,2)==0
        states2_M(i,:) = states(i-1,:).*states(i-2,:); 
    end 
end

我希望

states2_M
states2_P
相匹配。我的 MATLAB 代码做错了什么?

python arrays matlab matrix-multiplication remainder
1个回答
0
投票

在 MATLAB 中,索引从 1 开始,在 Python 中从 0 开始。您调整了所有地方的索引,它保留了条件

mod(i,2)==0
。在 Python 中,对于第一个数组元素以及之后的每个第二个元素都是如此。在 MATLAB 中,第二个数组元素以及之后的每个第二个元素都是如此。

在 MATLAB 中,您需要

mod(i,2)==1
来匹配 Python。

© www.soinside.com 2019 - 2024. All rights reserved.