【发布时间】:2013-09-23 12:50:06
【问题描述】:
在how empty structs are dealt with 中找到一些逻辑后,我想检查它是如何推广到矩阵的。
在这里我注意到以下内容:
如果你有一个 1x1 矩阵,并分配给第一个元素。它与分配给所有元素不同。
这让我很惊讶,因为第一个元素实际上与本例中的所有元素相同。以下是我的观察:
x = 1;
y = 1;
z = 1;
x(:) = []; % Evaluates to [] as I expected
y(1) = []; % Evaluates to Empty matrix: 1-by-0, rather than []
z(1,1) = []; %Throws an error: 'Subscripted assignment dimension mismatch.' even though size(z) gives [1 1];
z(1,:) = []; % Evaluates to Empty matrix: 0-by-1, just like z(:,:) = []
看到这个后我的问题是:
为什么以不同的方式分配给同一事物会导致四种不同的结果?
【问题讨论】:
-
您只是感兴趣,还是对您来说这是一个实际问题?
-
@DennisJaheruddin 你应该在 TMW 的 QA 团队工作 :)
-
@SamRoberts 问题why 主要是出于兴趣,但尤其是第一种情况和第四种情况之间的差异让我担心我的代码的健壮性。因此,这不仅是一个问题,也是一个警告。
-
@DennisJaheruddin 我想你的意思是
z(1,:) = [];最后一个案例?z(:,1) = [];给了我一个空的 1×0 矩阵 -
@Dan 正确,已修复!