如何在Matlab中存储每个循环的字符?

时间:2017-10-31 04:43:48

标签: arrays matlab

我有一个字符串:

A="ILOVEYOUMATLAB"

我创建了2个空数组:

B1=[]
B2=[]

当我使用while循环时,第一次循环,如果我希望 A 中的第一个字符存储在 B1 数组中,我需要什么命令写?

如果在Python中,我只需要使用追加命令,但如果在Matlab中,需要申请的是什么?

3 个答案:

答案 0 :(得分:0)

如果你有MATLAB R2016b或更新版本,你可以使用新的string课程'重载+运算符以更加pythonic的方式附加文本:

A = 'hi';
B = "";
B = B + A(1)

这给了你:

B = 

    "h"

我在这里创建了A作为传统字符数组('')和B作为字符串数组(""),主要是为了避免索引到字符串数组(A{1}(1)而不是A(1))。

您也可以使用传统的matrix concatenation来完成任务:

B = [B, A(1)];
% or
B = strcat(B, A(1));
% or
B(end+1) = A(1);

请注意,其中4种方法将在内存中不断增长B,这可能是一个重要的性能瓶颈。如果你知道要包含多少元素B,你可以节省大量的IO时间preallocating the array并使用矩阵索引在循环中分配值:

A = {'apple', 'banana', 'cucumber'};
B = char(zeros(1, numel(A)));

for ii = 1:numel(A)
    B(ii) = A{ii}(1);
end

答案 1 :(得分:-1)

你可以尝试 strcat 来连接matlab中的字符串 https://www.mathworks.com/help/matlab/ref/strcat.html

答案 2 :(得分:-1)

尝试使用数组而不是矩阵。您可以将第一个字母分配给B1数组的第一个位置,如下所示:

>> A = 'ILOVEMATLAB';
>> B1 = {};
>> B1{1} = A(1);
>> B1{1}

ans = 

I

循环:

for i = 1:length(A)
    B1{i} = A{i};
end