有没有办法在Matlab中指定矩阵视图,而不是像NumPy中那样复制矩阵本身?
。。将B的第一行复制到A 是否有创建矩阵视图对象的方法,例如有没有办法在Matlab中指定矩阵视图,而不是像NumPy中那样复制矩阵本身?,matlab,memory,numpy,matrix,Matlab,Memory,Numpy,Matrix,。。将B的第一行复制到A 是否有创建矩阵视图对象的方法,例如 A = B(1, :) 能够参考矩阵的视图?而且,这也会让事情变得如此 frB = view(B(1, :)) 请参见此NumPy示例,它正好做到了这一点: 您可以使用Matlab中的指针指向同一矩阵,而无需复制。下面是一个基于 首先定义一个继承自句柄类的类,它是Matlab的指针类。类属性将存储矩阵 B(1, 3) = 123123; % set B(1, 3) to 123123 for illustration pu
A = B(1, :)
能够参考矩阵的视图?而且,这也会让事情变得如此
frB = view(B(1, :))
请参见此NumPy示例,它正好做到了这一点:
您可以使用Matlab中的指针指向同一矩阵,而无需复制。下面是一个基于 首先定义一个继承自
句柄
类的类,它是Matlab的指针类。类属性将存储矩阵
B(1, 3) = 123123; % set B(1, 3) to 123123 for illustration purposes
frB(3) = 9999; % set B(1, 3) to 9999
disp(B(1, 3)); % prints 9999
您可以向
HandleObject
添加更多函数,以符合所需的视图。我很惊讶HandleMatrix类不是Matlab中的默认对象。。但我想这样做是为了让面向编程较少的用户更容易理解
classdef HandleObject < handle
properties
Object=[]; % This will be your matrix
end
methods
function obj=HandleObject(receivedObject) %This is the constructor
obj.Object=receivedObject;
end
end
end
M = HandleObject(ones(5,5)); %The constructor passes the matrix to the Object property
M_view = M; %M_view is a copy of the pointer
M.Object(1,1) = 5; %Change the matrix by changing the Object property
display(M_view.Object(1,1)) %This should display 5