小编Joe*_*Joe的帖子

在MATLAB中的循环内绘图

我正在做这样的事情:

a = [1:100];
for i=1:100,
    plot([1:i], a(1:i));
end
Run Code Online (Sandbox Code Playgroud)

我的问题是在循环结束之前不会显示绘图.如何在每次迭代中显示/更新绘图?

matlab plot

17
推荐指数
2
解决办法
8万
查看次数

Matlab不优化以下内容吗?

我有一个非常长的向量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在这种情况下),而不先计算它并将它放在一个变量中.

matlab matrix sparse-matrix

7
推荐指数
1
解决办法
94
查看次数

MATLAB散点图中的线性回归线

我试图得到两个变量的散点图的残差.我可以使用lslinematlab函数得到最小二乘线性回归线.但是,我也希望得到残差.我怎样才能在matlab中得到这个.为此,我需要知道参数a和b线性回归线

ax+b
Run Code Online (Sandbox Code Playgroud)

matlab regression least-squares

6
推荐指数
1
解决办法
3万
查看次数

在MATLAB中使用repmat复制Kronecker张量

我试图仅使用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)

matlab matrix reshape

6
推荐指数
1
解决办法
244
查看次数

查找单元格数组中所有(非唯一)元素的索引,因为它们出现在第二个(已排序且唯一的)单元格数组中

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,因为向量是不同的大小.

向量实际上将包含日期字符串,我需要索引不是逻辑索引矩阵,我对不使用它进行索引的数字感兴趣.

我该怎么做?

matlab find cell-array

5
推荐指数
1
解决办法
5746
查看次数

Bash从文件读取并存储到MATLAB中的变量

我试图从Bash中一个非常简单的1行文件中读取2个浮动数字.我想将这两个数字存储到变量中.我从谷歌搜索看到的所有例子如下:

while read VAR1 VAR2
do
   <command>
done < file.txt
Run Code Online (Sandbox Code Playgroud)

但是,这可防止VAR1和VAR2内while唯一循环.如何存储这两个变量,以便我可以在脚本的任何位置使用它们?非常感谢!

bash matlab

4
推荐指数
1
解决办法
1万
查看次数

将矩阵A的每行中的每个值乘以矩阵B中特定行的每个对应值


我有一个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])所以我正在寻找更聪明/更快的方法来做到这一点.

matlab matrix matrix-multiplication

3
推荐指数
1
解决办法
696
查看次数

在MATLAB中获取0的数组中随机1的位置

我有一个矩阵,初始化如下:

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)

random indexing matlab matrix binary-data

2
推荐指数
1
解决办法
51
查看次数

Matlab嵌套循环到矢量化

如果我有一个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)

matlab for-loop nested vectorization

1
推荐指数
1
解决办法
236
查看次数

在 MATLAB 中使用 PCA 降低特征的维数

我对 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 。现在我的困惑开始了。

  1. 我应该转置矩阵M,即PCA(M')?

  2. 我应该选择 coeff 还是 score 的第一列?

  3. 这第三个问题现在有点无关了。假设我们有一个矩阵A = rand(30,100),其中行是数据点,列是特征。现在我想降低特征向量的维数但保留所有数据点。

    我怎样才能用 PCA 做到这一点?

    当我这样做时,[coeff, score, latent, ~, explained] = pca(M);系数的尺寸为 100x29,分数的尺寸为 30x29。我完全糊涂了。

matlab pca

1
推荐指数
1
解决办法
4801
查看次数

在MATLAB中重复矩阵行

我有一个与这篇文章有关的问题:"克隆"行或列向量.我试图解决那里发布的答案,但未能将它们应用到我的问题中.


就我而言,我想通过转换矩阵来"克隆"矩阵的每一行

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)

有谁知道如何正确编写循环,或更好的方法来做到这一点?

matlab matrix

1
推荐指数
1
解决办法
380
查看次数

在MATLAB中绘制具有离散X轴范围的图

我有一个数值数组称为samples与尺寸[1 250] .我想绘制它以使得范围内的点[100 110]并且[200 350]不会在图上显示.

matlab plot range subset matlab-figure

1
推荐指数
1
解决办法
140
查看次数

在MATLAB中用其他值(平均值)替换NaN

我有矩阵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条件.但是,此解决方案执行速度不是很快.

matlab matrix nan

-3
推荐指数
1
解决办法
302
查看次数