我正试图了解MATLAB中对这一特定代码行的处理情况
good_mintratio=handles.mintratio(handles.good)
handles.good是一个大小为(48x60(的数组,其中所有元素都是1。handles.mintraratio也是一个大小为(48x60(的数组,其中包含浮点值。
我运行了以下简单的代码来了解它到底做了什么,但我不太确定到底发生了什么。对于这段代码,
A = [1,2,3; 4,5,6];
B = [1,1,1; 1,1,1];
C=A(B);
这将返回C = [1,1,1;1,1,1]
看起来C和B一样,但包含A的元素,其中B的元素是A的索引。
A = [1,2,3; 4,5,6];
B = [2,1,1; 1,5,1];
C=A(B);
比如,这将使C = [4,1,1;1,3,1]
但是good_mintratio=handles.mintraratio(handles.good(这形成了一个大小为(2880,1(的colmun。看起来所有的元素都组合成了一个单独的colmun,但不确定大小为什么会改变。此外,如果handles.good有一些0(这在MATLAB中意味着false,对吧?(,这会改变结果吗?
当您使用按数组索引时(如C = A(B);
中(,有两个选项:
- 数组
B
基于非逻辑数(通常为Double
(:输出基于数组A
的线性索引 - 数组
B
基于逻辑元素:输出是true
在B
中的元素的向量
例如:
clear();
mA = reshape(1:9, 3, 3);
mB = randi([1, 9], 3, 3);
mC = logical(randi([0, 1], 3, 3));
mA(mB)
mA(mC)
然后输出:
ans =
5 9 5
9 8 9
8 7 4
ans =
2
5
8