我正在做这样的事情:
a = [1:100];
for i=1:100,
plot([1:i], a(1:i));
end
Run Code Online (Sandbox Code Playgroud)
我的问题是在循环结束之前不会显示绘图.如何在每次迭代中显示/更新绘图?
我有一个非常长的向量1xr v,一个非常长的向量w1xs,和一个矩阵Arxs,它是稀疏的(但尺寸非常大).
我期待Matlab优化以下内容,所以我不会遇到内存问题:
A./(v'*w)
Run Code Online (Sandbox Code Playgroud)
但似乎Matlab实际上是在尝试生成完整的v'*w矩阵,因为我遇到了内存不足的问题.有办法克服这个问题吗?请注意,不需要计算所有v'*w值,因为很多值A都是0.
编辑:如果可能的话,一种方法就是这样做 A(find(A))./(v'*w)(find(A));
但是你不能先选择一个矩阵的子集(v'*w在这种情况下),而不先计算它并将它放在一个变量中.
我试图得到两个变量的散点图的残差.我可以使用lslinematlab函数得到最小二乘线性回归线.但是,我也希望得到残差.我怎样才能在matlab中得到这个.为此,我需要知道参数a和b线性回归线
ax+b
Run Code Online (Sandbox Code Playgroud) 我试图仅使用repmat和reshape复制Kron产品,我相信我非常接近,但我无法完成最后一次正确的重塑.特别是我在重塑时遇到了问题A
为了简单起见,我们假设有
A=[1 3; 2 4]
B=[5 10; 10 5]
Run Code Online (Sandbox Code Playgroud)
所以我kron(A,B)将成为一个4x4矩阵.
kron=[5 10 15 30
10 5 30 15
10 20 20 40
20 10 40 20]
Run Code Online (Sandbox Code Playgroud)
我正在这样做:
Y=repmat(B,2,2)
X=A(:);
X=repmat(X,1,2)';
X=X(:);
X=repmat(X,1,2);
Run Code Online (Sandbox Code Playgroud)
这给了我以下8x2矩阵:
X= [1 1
1 1
2 2
2 2
3 3
3 3
4 4
4 4]
Run Code Online (Sandbox Code Playgroud)
我不能弄清楚如何正确的重塑以获得我的4x4矩阵:
X=[1 1 3 3
1 1 3 3
2 2 4 4
2 2 4 4]
Run Code Online (Sandbox Code Playgroud)
然后我将能够计算: X.*Y=kron(A,B)
A = {'A'; 'E'; 'A'; 'F'};
B = {'A';'B';'C';'D';'E'; 'F'};
Run Code Online (Sandbox Code Playgroud)
我试图获取单元格数组中的每个字符串A,该索引与单元格数组中的该字符串匹配B.A会有重复的价值,B不会.
find(ismember(B, A) == 1)
Run Code Online (Sandbox Code Playgroud)
输出
1
5
6
Run Code Online (Sandbox Code Playgroud)
但我想得到
1
5
1
6
Run Code Online (Sandbox Code Playgroud)
优选地在一个衬里中.我不能使用strcmp而不是ismember,因为向量是不同的大小.
向量实际上将包含日期字符串,我需要索引不是逻辑索引矩阵,我对不使用它进行索引的数字感兴趣.
我该怎么做?
我试图从Bash中一个非常简单的1行文件中读取2个浮动数字.我想将这两个数字存储到变量中.我从谷歌搜索看到的所有例子如下:
while read VAR1 VAR2
do
<command>
done < file.txt
Run Code Online (Sandbox Code Playgroud)
但是,这可防止VAR1和VAR2内while唯一循环.如何存储这两个变量,以便我可以在脚本的任何位置使用它们?非常感谢!
我有一个A=[m,n]矩阵和一个B=[n,l]矩阵.
A =
[1 2 3
4 5 6
7 8 9
10 11 12]
Run Code Online (Sandbox Code Playgroud)
为简单起见,我们假设l=1,B实际上是一个向量B=[n,1]
B = [100 10 1]
Run Code Online (Sandbox Code Playgroud)
我想将每一行中的所有值乘以A相应的值B- 列方式.
我知道如何"手动":
C=[A(:,1)*B(:,1), A(:,2)*B(:,2), A(:,3)*B(:,3)]
Run Code Online (Sandbox Code Playgroud)
这是我想要的结果:
C = [100 20 3
400 50 6
700 80 9
1000 110 12]
Run Code Online (Sandbox Code Playgroud)
不幸的是我的真实生活矩阵有点大,例如(D=[888,1270])所以我正在寻找更聪明/更快的方法来做到这一点.
我有一个矩阵,初始化如下:
stateAndAction = zeros(11, 4);
Run Code Online (Sandbox Code Playgroud)
随着时间的推移,矩阵将被更新,以便在给定的索引处将有一个.所以在任何时候我们都可以看到这样的东西
1 1 0 1
1 0 0 0
0 1 0 0
0 0 1 0
0 1 0 0
0 0 0 1
1 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Run Code Online (Sandbox Code Playgroud)
如何找到一个随机的行和列?
这是我想到的功能签名:
[random_row_index, random_column_index] = findRandom(stateAndAction)
Run Code Online (Sandbox Code Playgroud) 如果我有一个for带有嵌套for循环的循环,使用一个循环将值输入到方形矩阵中for,循环通过我的Y轴,另一个循环通过我的X轴
我怎样才能将其改为矢量化以提高效率
g=zeros(f);
%y loop
for u = 1:f
%x loop
for v = 1:f
g(u,v) = exp(-(((u-u0)^2)+((v-u0)^2))/(2*(sigma^2)))
end
end
Run Code Online (Sandbox Code Playgroud) 我对 PCA 完全困惑。我有一个大小为 90x60x12x350 的 4D 图像。这意味着每个体素都是一个大小为 350(时间序列)的向量。
现在我将 3D 图像 (90x60x12) 分成立方体。所以假设一个立方体包含 n 个体素,所以我有 n 个大小为 350 的向量。我想将此n向量减少到只有一个向量,然后计算所有立方体的所有向量之间的相关性。
因此,对于一个立方体,我可以构建矩阵M,我只是把每个像素后对方,即M = [v1 v2 v3 ... vn]每个v的大小为350。
现在我可以通过使用[coeff, score, latent, ~, explained] = pca(M);和采用第一个组件在 Matlab 中应用 PCA 。现在我的困惑开始了。
我应该转置矩阵M,即PCA(M')?
我应该选择 coeff 还是 score 的第一列?
这第三个问题现在有点无关了。假设我们有一个矩阵A = rand(30,100),其中行是数据点,列是特征。现在我想降低特征向量的维数但保留所有数据点。
我怎样才能用 PCA 做到这一点?
当我这样做时,[coeff, score, latent, ~, explained] = pca(M);系数的尺寸为 100x29,分数的尺寸为 30x29。我完全糊涂了。
我有一个与这篇文章有关的问题:"克隆"行或列向量.我试图解决那里发布的答案,但未能将它们应用到我的问题中.
就我而言,我想通过转换矩阵来"克隆"矩阵的每一行
A = [1,2; 3, 4; 5, 6]
Run Code Online (Sandbox Code Playgroud)
进入矩阵
B = [1, 2
1, 2
3, 4
3, 4
5, 6
5, 6]
Run Code Online (Sandbox Code Playgroud)
通过重复每一行A多次.
到目前为止,我能够repmat像单行一样工作
A = [1, 2];
B = repmat(A, 2, 1)
>> B = [1, 2
1, 2]
Run Code Online (Sandbox Code Playgroud)
我试图使用该公式构建循环,以获得所需的矩阵.循环看起来像
T = 3; N = 2;
for t = 1:T
for I = 1:N
B = repmat(C, 21, 1)
end
end
Run Code Online (Sandbox Code Playgroud)
有谁知道如何正确编写循环,或更好的方法来做到这一点?
我有一个数值数组称为samples与尺寸[1 250] .我想绘制它以使得范围内的点[100 110]并且[200 350]不会在图上显示.
我有矩阵A如:
A = [1 2 3 NaN;
1 NaN 2 NaN;
NaN 2 3 4]
Run Code Online (Sandbox Code Playgroud)
我想用预定义的值替换每个NaNin A,例如我的列vector B:
B = [2; 1.5; 3]
Run Code Online (Sandbox Code Playgroud)
因此,对于第二行,我想获得一个新矩阵,其中此特定行中的每个NaN都被替换为1.5.它将2在第一行和3第三行.
除了循环整个矩阵之外,还有更好的方法吗?我用了一个for与循环if和else条件.但是,此解决方案执行速度不是很快.