我需要将函数的输出放入向量中。
事实上我的结果似乎是这样的:
ans=
result 1
ans=
result2
ans=
result3
......
我需要我的结果如下:
Vector= (result1
result2
result3
....)
我的职能部门是这样的:
function[keys]=generate()
for k=1:257
x= round(rand*9);
vet = x*ones(1,16);
i= round(rand*length(vet));
i(i==0)=1;
val= round(rand*257);
vet(i)=val;
keys=dec2hex (vet)
endfor
endfunction
如果你能帮助我,我将非常感激。
答案 0 :(得分:1)
一般来说,这是一个非常含糊的问题。
如果你正在调用的函数返回多个东西,你可以在这样的向量中捕获它们:
[a, b, c] = myFunc()
如果您正在调用多个函数,每个函数存储一件事,您可以执行以下操作:
vec = []
a = myFunc1()
vec = [vec a]
a = myFunc2()
vec = [vec a]
etc...
或更短:
vec = [myFunc1() myFunc2() ... ]
好像您看到的ans
输出是由于线上没有分号所致:
dec2hex(vet)
您应该将该输出保存到矢量中并返回:
function[keys]=generate()
keys = [];
for k=1:257
x= round(rand*9);
vet = x*ones(1,16);
i= round(rand*length(vet));
i(i==0)=1;
val= round(rand*257);
vet(i)=val;
keys = [keys dec2hex(vet)];
endfor % endfor for octave
endfunction
答案 1 :(得分:0)
很有可能你可以将你的语句包装到 result
user
aaa 1*0.3+2*0.35+0*0.4
bbb 0*0.3+10*0.35+11*0.4
ccc 0*0.3+1*0.35+2*0.4
ddd 1*0.3+2*0.35+3*0.4
eee 1*0.3+2*0.35+0*0.4
或ans
计算horzcat
以实现你想要的目标。
答案 2 :(得分:0)
我会省略for循环,如果要生成随机整数,则应使用randi
,例如索引。我想你想要分割生成密钥并将它们转换为十六进制,因为十六进制格式用于可视化。最后,我想这个问题会受到XY-problem
function keys = generate ()
key_cnt = 5;
key_offset = 9;
key_length = 16;
keys = ones (1, key_length) .* randi (key_offset + 1, key_cnt, 1) - 1;
val = randi (2 ** 8, key_cnt, 1) - 1;
i = randi (key_length, key_cnt, 1);
ind = sub2ind ([key_cnt, key_length], 1:key_cnt, i');
keys (ind) = val;
endfunction
function ret = hex_keys (k)
## convert keys to hex string
for i = 1:rows (k)
ret(i, :) = [sprintf("%02X ",k(i,1:15)), sprintf("%02X",k(i,16))];
endfor
endfunction
k = generate ();
hex_keys (k)
给出
00 00 00 2A 00 00 00 00 00 00 00 00 00 00 00 00
03 03 C7 03 03 03 03 03 03 03 03 03 03 03 03 03
07 07 07 07 07 07 07 07 07 07 07 07 A7 07 07 07
03 03 03 03 03 03 03 8F 03 03 03 03 03 03 03 03
03 03 03 03 03 03 03 03 03 D0 03 03 03 03 03 03
如果你完成了测试,当然将key_cnt增加到257.