如何在mat文件中标记单元格并将其保存在matlab中的另一个mat文件中?

如何在mat文件中标记单元格并将其保存在matlab中的另一个mat文件中?,matlab,Matlab,我有一个732 x 1的mat文件,名为EnginePower。我使用平均值函数来查找我的发动机功率的平均值,我想首先将所有值与我的平均值和低于平均值的值进行比较,我想在另一个新的mat文件中将其标记为-1,将高于平均值的值标记为1。如果数据是单元格 % lets say you have a variable called "var1" in the mat file load('your_mat_file.mat') var1=cellfun(@(A) sign(A), var1,'Uni

我有一个732 x 1的mat文件,名为EnginePower。我使用平均值函数来查找我的发动机功率的平均值,我想首先将所有值与我的平均值和低于平均值的值进行比较,我想在另一个新的mat文件中将其标记为-1,将高于平均值的值标记为1。

如果数据是单元格

% lets say you have a variable called "var1" in the mat file

load('your_mat_file.mat')
var1=cellfun(@(A) sign(A), var1,'UniformOutput', false);
save('new_mat_file.mat','var1')

%if you want to change any variable in the mat file
clear all
load('your_mat_file.mat')
var_names=whos;
for i=1:length(var_names)
eval([var_names(i).name,'=cellfun(@(A) sign(A), ',var_names(i).name,'''UniformOutput''', false);'])
save('new_mat_file.mat')
end
如果你的数据是双精度的

% lets say you have a variable called "var1" in the mat file

load('your_mat_file.mat')
var1=sign(var1);
save('new_mat_file.mat','var1')

%if you want to change any variable in the mat file
clear all
load('your_mat_file.mat')
var_names=whos;
for i=1:length(var_names)
eval([var_names(i).name,'=sign(',var_names(i).name,')'])
save('new_mat_file.mat')
end
对于任何数据类型,如果需要符号以外的任何其他条件,请更改:

var1=sign(var1);
为了

var1=(var1'your_cut_value').*1;

很抱歉问这个问题,如果我使用上述代码,我是否仅限于mat文件中的一个值?@TK Alive no。您可以选择mat文件中的任何变量。您是否希望这也是自动的?将每个变量更改为-1,1?或者您知道哪些变量在里面,所以您基本上可以复制var1行代码。最后一个选项是最简单的,谢谢你的回复。我在mat文件中有732个值,都在一列中,范围从0到70,平均值为21。我想21以下的标签为-1,21以上的标签为1。这可能吗?我试图查看帮助,但似乎没有找到任何相关内容。@TK Alive,我没有尝试上次编辑,但应该很接近。我使用cellfun输入时出现此错误#2应为单元格数组,而不是双精度输入。
var1=(var1<'your_cut_value').*-1+(var1>'your_cut_value').*1;