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

How do i label cells in a mat file and save it in another mat file in matlab?

我有一个名为 EnginePower 的 732 x 1 DOUBLE 的 mat 文件。我使用 mean 函数找到我的引擎功率的平均值,我首先想将所有值与我的平均值和那些低于平均值的值进行比较,我想将其标记为 -1 和高于平均值的值作为另一个新 mat 文件中的 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+(var1>'your_cut_value').*1;