matlab - 将整个 matlab 工作区转换为某个类

标签 matlab casting

我正在寻找一种方法将 matlab 中的整个工作区转换为某个类(例如 double)。 为了简单起见,我们假设工作区中仅存在“简单”类(没有单元格或结构体)。当然,我可以逐行更改每个变量 x=double(x) ,但如果我有数百个变量,那就不切实际了。这是我到目前为止所写的内容:

% # generate some variables of different classes
a1=int32(120);
a2=single(rand(10));
a3=double(rand(20));  
a4=(rand(5)>0.5);  %# logical

% # collect workspace variables using `whos` 
ws=whos;

for ii=1:size(ws,1)
     [ ? ] =   double(eval(ws(ii).name))
end

最后一行 double(eval(ws{1,ii})) 执行转换,但我应该如何将其输出自动分配给原始变量名称?

如果您能想到一种方法,也欢迎您提出另一种方法来转换工作区的所有变量...

最佳答案

有趣的问题(+1)。这又如何呢?

ws = whos; %# Obtain workspace
for n = 1:size(ws,1)
    eval([ws(n).name, ' = double(', ws(n).name, ');']); %# Assign to double
end

这对我在 R2012b 上有效。诀窍是更改变量类型并通过一次调用 eval 对其进行分配。

关于matlab - 将整个 matlab 工作区转换为某个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14007539/

相关文章:

c++ - boost::numeric_cast 功能无一异常(exception)

matlab - Simulink:如何将持续时间值为零的基于事件的信号转换为基于时间的信号而不丢失信息

matlab - 将两个参数传递给 fminunc 函数

python-3.x - python : casting map object to list makes map object empty?

c - 当 double 转换为 int 时,最后一位数字丢失

java - 类转换异常 : fragment 1 cannot be cast to fragment 2

matlab - MATLAB 中不使用循环的图像分量乘法?

matlab - 颜色条减慢情节

matlab optimoptions 将残差保存在变量中

php - 如何在 PHP 中将数组元素转换为字符串?