MATLAB - map 函数



MATLAB 中的 map 函数是一个强大的工具,允许你将特定的操作或函数应用于数组或元胞数组中的每个元素,并将结果返回到新的数组或元胞数组中。当你想对多个数据点执行相同的操作而无需编写循环时,这尤其有用。

Matlab 没有内置的 map 函数,但是,你可以使用其他内置函数和结构来实现类似的功能。

对数组使用 arrayfun

MATLAB 中的 arrayfun 函数允许你将函数应用于数组的每个元素,类似于映射的概念。

语法

B = arrayfun(func, A)

语法的详细解释如下:

B - 这是输出数组,它是将函数 func 应用于输入数组 A 的每个元素的结果。

func - 这是你想要应用于输入数组每个元素的函数。它可以是匿名函数或函数句柄。func 应该接受一个输入参数(A 的当前元素)并返回单个值。

A - 这是你想要应用函数 func 的输入数组。

示例 1

假设你有一个数字数组,并且数组中的每个数字都必须平方。为此,我们可以使用 arrayfun,如下例所示。

% This is a function to square a number
square_function = @(x) x^2;

% Array of numbers to be squared 
input_array = [1, 2, 3, 4, 5];

% Use arrayfun to apply the square function to each element
output_array = arrayfun(square_function, input_array);

% Display the result
disp(output_array)

在这个例子中,square_function 应用于 input_array 中的每个元素,结果存储在 output_array 中。结果是 [1, 4, 9, 16, 25]。

arrayfun 简化了将函数应用于数组每个元素的过程,并帮助我们避免使用循环来执行相同操作。

当你在 matlab 命令窗口中执行相同的操作时,输出为:

>> % This is a function to square a number
square_function = @(x) x^2;

% Array of numbers to be squared 
input_array = [1, 2, 3, 4, 5];

% Use arrayfun to apply the square function to each element
output_array = arrayfun(square_function, input_array);

% Display the result
disp(output_array)

     1     4     9    16    25

对元胞数组使用 cellfun

对于元胞数组,你可以使用 cellfun 函数将函数应用于元胞数组的每个元素。

语法

B = cellfun(func, C)

B - 这是输出元胞数组,它是将函数 func 应用于输入元胞数组 C 的每个元素的结果。

func - 这是你想要应用于元胞数组每个元素的函数。func 可以是匿名函数或函数句柄。该函数应该接受一个输入参数(C 的当前元素)并返回单个值。

C - 这是你想要应用函数 func 的输入元胞数组。

示例 1:将函数应用于字符串元胞数组

假设你有一个字符串元胞数组,并且你想要知道元胞数组中每个字符串的长度。为此,你可以使用 cellfun(),如下例所示:

% Create a cell array of strings
input_cell_array = {'apple', 'banana', 'cherry'};

% Define a function to find the length of a string
length_function = @(str) length(str);

% Use cellfun to apply the length function to each element
output_array = cellfun(length_function, input_cell_array);

% Display the result
disp(output_array)

在这个例子中,length_function 应用于 input_cell_array 中的每个字符串,结果存储在 output_array 中。

当你在 matlab 命令窗口中执行上述代码时,输出如下:

>> % Create a cell array of strings
input_cell_array = {'apple', 'banana', 'cherry'};

% Define a function to find the length of a string
length_function = @(str) length(str);

% Use cellfun to apply the length function to each element
output_array = cellfun(length_function, input_cell_array);

% Display the result
disp(output_array)

     5     6     6

示例 2:将函数应用于数字元胞数组

假设你有一个数值数组的元胞数组,并且你想要找到每个数值数组的总和。为此,让我们使用 cellfun() 应用于每个元胞数组,如下所示:

% Create a cell array of numeric arrays
numeric_cells = { [1, 2, 3], [4, 5], [6, 7, 8, 9] };

% Define a function to compute the sum of an array
sum_function = @(arr) sum(arr);

% Use cellfun to apply the sum function to each element
output_array = cellfun(sum_function, numeric_cells);

% Display the result
disp(output_array)

在这个例子中,sum_function 应用于 numeric_cells 元胞数组中的每个数值数组,结果存储在 output_array 中。让我们通过在 matlab 命令窗口中执行上述代码来检查输出。

>> % Create a cell array of numeric arrays
numeric_cells = { [1, 2, 3], [4, 5], [6, 7, 8, 9] };

% Define a function to compute the sum of an array
sum_function = @(arr) sum(arr);

% Use cellfun to apply the sum function to each element
output_array = cellfun(sum_function, numeric_cells);

% Display the result
disp(output_array)

     6     9    30
广告