相关疑难解决方法(0)

使用向量作为矩阵的索引

我正在编写一个MATLAB函数来将数据读出到一个n维数组(可变维度大小).我需要能够访问Matrix中的特定点(例如,写入或读取它),但我不知道要指定多少索引.

目前我有一个current_point向量迭代指定每个索引的max_points向量,以及一个指定数组大小的向量.所以,例如,如果我想要一个大小为1000×15×3的三维数组max_points = [1000 15 3],并且current_point迭代[1, 1, 1][1000, 15, 3]([1, 1, 1]- > [1000, 1, 1]- > [1, 2, 1]- > [1000, 2, 1]- > ...).我希望能够做的是current_point作为矩阵的索引,如下所示:

output_matrix(current_point) = val
Run Code Online (Sandbox Code Playgroud)

但显然output_matrix([1 2 3]) = val会有类似的东西outputmatrix(1:3) = 30.我不能只使用虚拟变量,因为有时矩阵需要3个索引,其他时间4,其他时间2等,所以我需要一个可变长度的矢量.是否有一种简单的方法可以将矢量用作索引中的点?

indexing matlab matrix

16
推荐指数
2
解决办法
5万
查看次数

Matlab:使用列\行索引对分配给矩阵

可能重复:
如何更改矩阵中多个点的值?

我有一个矩阵A和三个相同长度的向量r,保存要分配的行c的索引,保存要分配的列的索引,并v包含要分配的实际值.

我想得到的是A(r(i),c(i))==v(i)所有人i.但是这样做

A(r,c)=v;
Run Code Online (Sandbox Code Playgroud)

例如,不会产生正确的结果,因为matlab将其解释为选择和的每个可能组合,rc为其赋值

n=5;
A=zeros(n);
r=1:n;
c=1:n;

A(r,c)=1;
Run Code Online (Sandbox Code Playgroud)

产生一个矩阵,我想得到单位矩阵,因为我想要A(r(i),c(i))==1的每一个i,只有对角线上的元素才会受到影响.

如何在没有for循环的情况下实现所需的结果?

indexing matlab matrix variable-assignment

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

如何在MATLAB中为矩阵的特定位置赋值?

我对Matlab不太熟悉,所以提前为这个愚蠢的问题道歉.我想将数字1分配给矩阵的某些特定位置.我有一个行向量和相应的列向量.我试图多次为这些位置分配值.但是,它没有用.这是一个较小的代码示例.假设有一个4*4矩阵,我想将矩阵(1,1),矩阵(2,3)和矩阵(3,4)分配给1.这就是我所做的.

matrix = zeros(4,4);
row = [1 2 3];
col = [1 3 4];
matrix(row,col)=1;
Run Code Online (Sandbox Code Playgroud)

但是,我得到了答案

matrix=[ 1 0 1 1
         1 0 1 1
         1 0 1 1
         0 0 0 0]    
Run Code Online (Sandbox Code Playgroud)

谁能指出我在这里做错了什么?我将要处理的矩阵的实际大小为数千,因此我无法手动逐个分配这些位置.有没有办法使用行向量和列向量我必须分配值1?非常感谢你,

matlab matrix variable-assignment

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

将指数矢量转换为矩阵

我想将索引向量转换为索引列中的索引的矩阵.

x = [2;1;3;1];
m = someFunc(x,3)
% m =
%
%   0   1   0
%   1   0   0
%   0   0   1
%   1   0   0
Run Code Online (Sandbox Code Playgroud)

matlab

6
推荐指数
2
解决办法
1266
查看次数

将matlab矩阵转换为向量

我想在预定义的位置获得Matlab矩阵元素的向量.例如,我有以下内容

>> i = [1,2,3];
>> j = [1,3,4];
>> A = [1,2,3,4; 5,6,7,8; 9,10,11,12; 13,14,15,16]

A =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16
Run Code Online (Sandbox Code Playgroud)

我想要一个矢量,它会给我在Acorrespongin的位置的值i,j.我试过了

A(i,j)

ans =

     1     3     4
     5     7     8
     9    11    12
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.我想得到以下内容

>> [A(i(1),j(1)); A(i(2),j(2));A(i(3),j(3))]

ans =

     1
     7
    12
Run Code Online (Sandbox Code Playgroud)

什么是matlab语法?请避免建议循环或任何不是矢量化形式的东西,因为我需要快速完成.希望会有一些内置功能.

matlab vector matrix

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

在不设置输出变量的情况下强制函数调用的输出数

对于任何函数,我能够通过明确定义我期望的输出数来指示要返回的变量 [out1,out2,...,outn] = ...

编辑:能够最大化潜在的输出数量也很有用

示例问题

以下代码完全符合预期(是的,它是多余的myArray(IND) = 1;)

[I,J] = ind2sub(size(myArray),IND)
myArray(I,J) = 1;
Run Code Online (Sandbox Code Playgroud)

当我尝试直接传递函数参数时,我得不到我想要的结果

myArray(ind2sub(size(myArray),IND)) = 1;
Run Code Online (Sandbox Code Playgroud)

我有意义的myArray(I) = 1;时候得到了myArray(I,J) = 1;

如何在不明确定义输出参数的情况下指示返回多少输出变量?

我希望eval()家庭中的某些功能或某些类型转换[],{},(:), etc.可以解决问题,但我没有看到任何文档或者让它们中的任何一个工作.

matlab

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

如何根据行号和列号创建数组

我想根据行号和列号创建一个数组.

例如 :

row_number   Column_number    Value
  1               1            5
  3               2           10
  4               6            4
  7               5           66
Run Code Online (Sandbox Code Playgroud)

该数组应如下所示:

A=


 5   0   0   0   0   0
 0   0   0   0   0   0
 0  10   0   0   0   0
 0   0   0   0   0   4
 0   0   0   0   0   0
 0   0   0   0   0   0
 0   0   0   0  66   0
Run Code Online (Sandbox Code Playgroud)

否则它将打印为零.

matlab

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

标签 统计

matlab ×7

matrix ×4

indexing ×2

variable-assignment ×2

vector ×1