如何在Matlab中的向量中插入符号

时间:2016-08-09 12:56:14

标签: matlab symbols

我在Matlab中有一个12个实体的向量。 a = [3 4 6 8 1 5 8 9 3 7 3 6]

我希望定期插入符号和值。 a的最终值看起来像这样。 a = [#3 4 @ 6& 8 LT; #1 5 @ 8& 9版; #3 7 @ 3& 6≤] 可以看出,符号在3个实体之后重复。 如何在Matlab中实现这一目标?

3 个答案:

答案 0 :(得分:3)

您可以使用sprintf。
例如:

a=[3 4 6 8 1 5 8 9 3 7 3 6 ]
Z = sprintf('#%d %d@ %d& %d< ',a);

制作

Z = #3 4@ 6& 8< #1 5@ 8& 9< #3 7@ 3& 6< 

sprintf将根据需要多次重复该字符串以使用a。

我无法分辨你想要的空格,但如果它们是统一的,你可以根据需要调整sprintf语句中的字符串模式

编辑:在sprintf语句的末尾添加了一个空格,以匹配OP的输出字符串

答案 1 :(得分:1)

关键解决方案是使用repmat复制符号数组,使其与数字数组的长度相同。 当a的所有元素都是单个数字时,以下示例有效:

S = ['#', '@', '&', '<']; %Symbols
a=[3 4 6 8 1 5 8 9 3 7 3 6 3 4 6 8 1 5 8 9 3 7 3 6];

A = char([3 4 6 8 1 5 8 9 3 7 3 6 3 4 6 8 1 5 8 9 3 7 3 6] + double('0')); %Convert digits to characters.
T = repmat(S, [1, ceil(length(A)/length(S))]); %Replicate S to be in length of A, or longer
T = T(1:length(A)); %Set T to same size as A
Z = char(zeros(1, length(A)*2));
Z(1:2:end) = T; %Fill symbols
Z(2:2:end) = A; %Fill numbers

结果:
Z = #3@4&6<8#1@5&8<9#3@7&3<6#3@4&6<8#1@5&8<9#3@7&3<6

使用空格:

S = ['#', '@', '&', '<']; %Symbols
a=[3 4 6 8 1 5 8 9 3 7 3 6 3 4 6 8 1 5 8 9 3 7 3 6];

A = char([3 4 6 8 1 5 8 9 3 7 3 6 3 4 6 8 1 5 8 9 3 7 3 6] + double('0')); %Convert digits to characters.
%T = repmat(S, [1, ceil(length(A)/length(S))]); %Replicate S to be in length of A, or longer
%T = T(1:length(A)); %Set T to same size as A
Z = char(zeros(1, length(A)*3)); %Allocate 3 times length of A (for symbol, for digit, and for space).

%#3 4@ 6& 8< #1 5@ 8& 9< #3 
Z(1:12:end)  = S(1);       %#
Z(2:12:end)  = A(1:4:end); %3
Z(3:12:end)  = ' ';        %' ' 
Z(4:12:end)  = A(2:4:end); %4
Z(5:12:end)  = S(2);       %@
Z(6:12:end)  = ' ';        %' '
Z(7:12:end)  = A(3:4:end); %6
Z(8:12:end)  = S(3);       %&
Z(9:12:end)  = ' ';        %' '
Z(10:12:end) = A(4:4:end); %8
Z(11:12:end) = S(4);       %<
Z(12:12:end) = ' ';        %' '

结果:
Z =
#3 4@ 6& 8< #1 5@ 8& 9< #3 7@ 3& 6< #3 4@ 6& 8< #1 5@ 8& 9< #3 7@ 3& 6<

答案 2 :(得分:0)

示例数组a=[3 4 6]

插入'',将数字更改为char。

a=['3' '4' '6']

a=['3' '^' '4' '#' '6']

a=['3'; '^'; '4'; '#'; '6']

3,4,6不可能是一个数字。

一个数组有一个变量类型。 (据我所知)