我有一个字符串:
A="ILOVEYOUMATLAB"
我创建了2个空数组:
B1=[]
B2=[]
当我使用while循环时,第一次循环,如果我希望 A 中的第一个字符存储在 B1 数组中,我需要什么命令写?
如果在Python中,我只需要使用追加命令,但如果在Matlab中,需要申请的是什么?
答案 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