我得到一个错误,怎么了?关于稀疏矩阵逻辑和答案

197次浏览(过去30天)
编写函数
稀疏矩阵是一个大矩阵,几乎所有元素的值都相同(通常为零)。稀疏矩阵的正常表示占用大量内存,而有用的信息可以用更少的内存捕获。表示稀疏矩阵的一种可能的方法是使用一个单元向量,其第一个元素是表示稀疏矩阵大小的2元素向量。第二个元素是一个标量,指定稀疏矩阵的默认值。单元格向量的每个连续元素都是一个3元素向量,表示稀疏矩阵中的一个元素,该元素具有不同于默认值的值。这三个元素分别是行索引、列索引和实际值。 编写一个名为“sparse2matrix”的函数,该函数接受上面定义的单元格向量的单个输入,并返回名为“matrix”的输出参数,即传统形式的矩阵。考虑下面的运行:
Cellvec = {[2 3], 0, [1 2 3], [2 2 -3]};
矩阵= sparse2matrix(cellvec)
矩阵=
0 3 0
0 -3 0
17日评论
穆罕默德·法赞·艾哈迈德
穆罕默德·法赞·艾哈迈德 2023年1月1日16:09
编辑:穆罕默德·法赞·艾哈迈德 2023年1月1日16:10
函数矩阵= sparse2matrix(input_cell)
矩阵= [];
Sz = input_cell{1};矩阵尺寸%
默认值= input_cell{2};%默认值
矩阵= ones(sz)*默认值;
I = 3: length(input_cell)
矩阵(input_cell{我}(1)input_cell{我}(2))= input_cell{我}(3);
结束

登录评论。

答案(28)

stanleo
stanleo 2019年7月7日
%简单版本
函数矩阵= sparse2matrix(cellvec)
矩阵= cellvec{2}*ones(cellvec{1});
m = 3:尺寸(cellvec, 2)
矩阵(cellvec {m} (1) cellvec {m} (2)) = cellvec {m} (3);
结束
6个评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年8月29日
Bhoomika:
我们不知道你在编程方面的经验有多丰富。我们必须从数学和计算机科学的基础开始,以一种我们可以相对地解释整个代码的方式 确定 你会理解的。这至少需要两本教科书来解释。我们谁也没有时间写那么多。
我们建议你问更具体的问题,这样更容易回答。

登录评论。


AYUSH GURTU
AYUSH GURTU 2019年5月28日
函数(矩阵)= sparse2matrix (incell)
S =大小(incell);
q = S (2) 2;
msize = incell {1};
mdef = incell {2};
矩阵= repmat (mdef msize);
问> 0
矩阵(incell {q + 2} (1) incell {q + 2} (2)) = incell {q + 2} (3);
Q = Q -1;
结束
3评论
穆罕默德·法赞·艾哈迈德
穆罕默德·法赞·艾哈迈德 2023年1月1日16:10
函数矩阵= sparse2matrix(input_cell)
矩阵= [];
Sz = input_cell{1};矩阵尺寸%
默认值= input_cell{2};%默认值
矩阵= ones(sz)*默认值;
I = 3: length(input_cell)
矩阵(input_cell{我}(1)input_cell{我}(2))= input_cell{我}(3);
结束

登录评论。


帕维尔Radko
帕维尔Radko 2020年8月13日
编辑:帕维尔Radko 2020年8月13日
通过所有测试方案。可能不是最好的一个(因为我不知道如何建立默认矩阵更容易的方式),但工作100%。
使用输入“cellvec”指令构建一个名为“matrix”的矩阵
函数矩阵= sparse2matrix(cellvec)
首先,我们构建一个大小为ii*jj的默认矩阵
我们使用cellvec的第一个元素来得到矩阵的大小
Ii = 1:cellvec{1}(1,1)
Jj = 1:cellvec{1}(1,2)
%矩阵的所有元素等于cellvec的第2个元素
矩阵(ii,jj) = cellvec{2};
结束
结束
%现在我们需要改变默认矩阵的元素
这些元素的位置和值的%指示在"cellvec"中
从第3个元素到“cellvec”结尾的%
Zz = 3:长度(cellvec)
%我们称之为“矩阵”元素,并从“cellvec”子数组的每3个元素中赋值给它们
矩阵(cellvec {zz} (1, 1), cellvec {zz}(1、2))= cellvec {zz}(1、3);
结束
结束
4评论
穆罕默德·法赞·艾哈迈德
穆罕默德·法赞·艾哈迈德 2023年1月1日16:11
函数矩阵= sparse2matrix(input_cell)
矩阵= [];
Sz = input_cell{1};矩阵尺寸%
默认值= input_cell{2};%默认值
矩阵= ones(sz)*默认值;
I = 3: length(input_cell)
矩阵(input_cell{我}(1)input_cell{我}(2))= input_cell{我}(3);
结束

登录评论。


辛格的阿布
辛格的阿布 2019年4月24日
函数(矩阵)= sparse2matrix (incell);
X =大小(incell);
q = X (2) 2;
msize = incell {1};
mdef = incell {2};
矩阵= repmat (mdef msize);
Q > 0
矩阵(incell {q + 2} (1) incell {q + 2} (2)) = incell {q + 2} (3);
打破
结束
输出
矩阵=
0 0 0
0 -3 0
要求输出
矩阵=
0 3 0
0 -3 0
3评论
穆罕默德·法赞·艾哈迈德
穆罕默德·法赞·艾哈迈德 2023年1月1日16:11
函数矩阵= sparse2matrix(input_cell)
矩阵= [];
Sz = input_cell{1};矩阵尺寸%
默认值= input_cell{2};%默认值
矩阵= ones(sz)*默认值;
I = 3: length(input_cell)
矩阵(input_cell{我}(1)input_cell{我}(2))= input_cell{我}(3);
结束

登录评论。


Jaimin Motavar
Jaimin Motavar 2019年6月30日
编辑:Jaimin Motavar 2019年6月30日
你能告诉我这个答案有什么问题吗?
函数矩阵= sparse2matrix(a)
e =长度(一个);
兰德(b = {1});
[m, n] =大小(b);
c = {1,3};
d = {1 4};
i = 1: m
j = 1: n
b (i, j) = {1,2};
结束
结束
g = 3: e
f = (g2):(飞行)
p (f) = {1, g} (1,1);
结束
结束
g = 3: e
f = (g2):(飞行)
问(f) = {1, g}(1、2);
结束
结束
g = 3: e
f = (g2):(飞行)
r (f) = {1, g}(1、3);
结束
结束
o = 1(飞行):
b (p (o)、(o)) = r (o);
结束
矩阵= b;
结束
1评论
穆罕默德·法赞·艾哈迈德
穆罕默德·法赞·艾哈迈德 2023年1月1日16:11
函数矩阵= sparse2matrix(input_cell)
矩阵= [];
Sz = input_cell{1};矩阵尺寸%
默认值= input_cell{2};%默认值
矩阵= ones(sz)*默认值;
I = 3: length(input_cell)
矩阵(input_cell{我}(1)input_cell{我}(2))= input_cell{我}(3);
结束

登录评论。


Litesh Ghute
Litesh Ghute 2020年3月20日
我的代码出了什么问题?
函数矩阵= sparse2matrix (v)
垫= 0 ([v {1} (1), v {1} (2)));
r =大小(垫);
m = 3;
M <= 4
我= v {m} (1);
j = v {m} (2);
垫(v {m} (i, j)) = v {m} (3);
m = m + 1;
结束
矩阵=垫;
结束
2的评论
穆罕默德·法赞·艾哈迈德
穆罕默德·法赞·艾哈迈德 2023年1月1日16:11
函数矩阵= sparse2matrix(input_cell)
矩阵= [];
Sz = input_cell{1};矩阵尺寸%
默认值= input_cell{2};%默认值
矩阵= ones(sz)*默认值;
I = 3: length(input_cell)
矩阵(input_cell{我}(1)input_cell{我}(2))= input_cell{我}(3);
结束

登录评论。


ABINAND PANDIYAN
ABINAND PANDIYAN 2020年4月23日
编辑:ABINAND PANDIYAN 2020年4月23日
所有的测试用例都是正确的。试试这个
函数矩阵= sparse2matrix (cellvec)
一个= cellvec {1};
行= (1);
列= (2);
main_value = cellvec {2};
Sparse_matrix = main_value * ones(行,列);
len =长度(cellvec);
我= 3:长度(cellvec)
Change = cellvec{i};
r =改变(1);
c =改变(2);
m =改变(3);
sparse_matrix (r, c) = m;
结束
矩阵= sparse_matrix;
结束
4评论
Thierno amadou mouctar balde
Thierno amadou mouctar balde 2020年12月29日
非常感谢!
使用变量len的一个建议是有效的
Len = length(cellvec);
I = I = 3:len
...
......
结束

登录评论。


Samarth maheshkumar gemlawala
成功计算所有测试用例。
函数矩阵= sparse2matrix(a)
Cellvec = a
p =大小(cellvec)
Z = cellvec{1,1}
X = cellvec{1,2}
矩阵= 0 (z(1,1),z(1,2));
i = 1: z (1, 1)
j = 1: z(1、2)
矩阵(i,j) = x;
结束
结束
J = 3: p(1,2)
Y = cellvec{1,j}
矩阵(y(1,1),y(1,2)) = y(1,3);
结束

Priyansh Kushwaha
Priyansh Kushwaha 2020年5月16日
编辑:Priyansh Kushwaha 2020年5月17日
函数矩阵= sparse2matrix (a)
b = {1}
b1 = b (1,1);
b2 = b(1、2);
e = 1 (b1, b2);
b = {1,2}
e = b。* (e);
我= 3:长度(a)
c = {1,};
d1 = c (1);
d2 = c(1、2);
d3 = c(1、3);
e (d1, d2) = d3;
矩阵= e;
结束
矩阵= e;
结束
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年5月17日
但是这里有分号,所以它不会显示任何东西。

登录评论。


utkarsh辛格
utkarsh辛格 2020年5月21日
编辑:utkarsh辛格 2020年5月21日
函数矩阵= sparse2matrix (a)
行= {1}(1,1);
col ={1}(1、2);
默认= {1,2};%或简单的default=a{1,2}
= 1的矩阵(行,坳)*违约;% = 1的矩阵({1})* deafult……不需要找row和col
m = 3:长度(a)
矩阵({m}(1, 1),一个{m}(1、2))= {m}(1、3);
结束

塔伊夫·艾哈迈德·比普尔
函数矩阵= sparse2matrix (cellvec)
m = (cellvec {1} (1) cellvec {1} (2));
m = m。* cellvec {2};
我= 3:长度(cellvec)
米(cellvec{我}(1)cellvec{我}(2))= cellvec{我}(3);
结束
矩阵= m;

艾哈迈德埃及客轮
艾哈迈德埃及客轮 2020年6月7日
函数矩阵= sparse2matrix(ce)
后来= 1 (ce{1}(1,1)、ce{1 1}(1、2))* ce {1,2};
siz =大小(ce);
i = siz(1、2);
2 = 3:我
后来(ce{1, 2}(1,1)、ce{1, 2}(1、2))= ce{1, 2}(1、3);
结束
矩阵=后来;

Shikha Thapa
Shikha Thapa 2020年6月13日
函数矩阵= sparse2matrix (cellvec)
矩阵= cellvec{1,2} *的([cellvec {1} (1) cellvec {1} (2)));
= 3:长度(cellvec)
矩阵(cellvec {1,} (1, 1), cellvec{1,}(1、2))= cellvec{1,}(1、3);
结束
1评论
Shikha Thapa
Shikha Thapa 2020年6月13日
你可以从答案中得到帮助,并相应地编码自己的逻辑!!

登录评论。


Kumar Shubham
Kumar Shubham 2020年7月12日
编辑:Kumar Shubham 2020年7月12日
函数矩阵= sparse2matrix(cellvec)
%创建req的矩阵。大小。
矩阵= 0 (cellvec {1});
%将分配的标量值分配给所有元素。
矩阵(:)=交易(cellvec {2});
%使用循环来处理矩阵的结果。
使用断点一步一步地查看结果的方法。
Ii = 3:长度(cellvec)
矩阵(cellvec {2} (1, 1), cellvec{2}(1、2))= cellvec{2}(1、3);
结束
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年7月12日
你为什么用deal?您是否期望cellvec{2}扩展为多个逗号分隔的元素?这不会发生在像{2}这样的标量下标上
如果你想复制cellvec{2}中的一个值expectd到左边的所有元素,那么你不需要deal()。

登录评论。


Ishani Uthpala
Ishani Uthpala 2020年8月1日
函数矩阵= sparse2matrix (v)
= v{1,2} * 1的矩阵(v {1 1} (1, 1), v{1 1}(1、2);
y =长度(v);
x = 3: y
矩阵(v {x} (1,1), v {1, x}(1、2)v = {1, x}(1、3);
x = x + 1;
结束
矩阵;
结束
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年8月1日
你们这一行的目的是什么
x = x + 1;
??
你们这一行的目的是什么
矩阵;
??

登录评论。


sushmanth pulavarthi
sushmanth pulavarthi 2020年8月3日
函数矩阵= sparse2matrix (v)
行v ={1}(1);列v = {1 1} (2);提取总数的%。sprase矩阵的行和列
级= v {2};%提取默认值
m = *级的(行、列);
我= 3:长度(v)%创建循环用于更改默认值以外的值
r = v {} (1);
c = v {} (2);
m (r、c) = v{我}(3);
结束
矩阵= m;
结束
这适用于任何no。的元素

A.H.M.Shahidul伊斯兰教
A.H.M.Shahidul伊斯兰教 2020年8月6日
% 100%准确
函数矩阵= sparse2matrix (m)
m =细胞(m);
m r = {1} (1); m c = {1} (2); dv = m {2};
党卫军=大小(m);
矩阵=稀疏(r、c) + dv;
q = ss(1、2);
2 = 3:问
矩阵(m {2} (1) {2} (2)) = m {2} (3);
结束
1评论
里克
里克 2020年8月6日
谢谢,现在我可以在作业上作弊了,而不必费心去理解问题或解决方法。
稍微严肃一点:你忘记了结尾。虽然你不知道 需要 它已经变得越来越普遍,特别是因为它可以将函数放在脚本文件中。

登录评论。


阿里·拉扎。
阿里·拉扎。 2020年9月9日
函数矩阵= sparse2matrix(x)
M = x{1};
m = ones(m (1), m (2)) * x{2};
[~,len] = size(x);
如果Len == 3
I = 3;
M (x{i}(1),x{i}(2)) = x{i}(3);
其他的
I = 3:len
M (x{i}(1),x{i}(2)) = x{i}(3);
结束
结束
矩阵= m;
结束

成员Mukul拉伊
成员Mukul拉伊 2020年10月22日
编辑:成员Mukul拉伊 2020年10月22日
函数矩阵= sparse2matrix(a)
asize =长度(a);
R = a{1}(1,1);
C = a{1}(1,2);
Z = 0 (r,c)
z (,) = {2};
如果asize < = 2
矩阵z =
返回
结束
jj = 3: asize
R1 = a{jj}(1,1);
C1 = a{jj}(1,2);
N1 = a{jj}(1,3);
z (r1, c1) = n1
结束
矩阵z =

阿卜杜勒·卡迪尔·汗
阿卜杜勒·卡迪尔·汗 2020年11月6日
函数矩阵= sparse2matrix (cellvec)
M = cellvec{1}(1,1);
N = cellvec{1}(1,2);
= ones(m,n) .* cellvec{1,2};
我= 3:长度(cellvec)
R1 = cellvec{i}(1,1);
C1 = cellvec{i}(1,2);
default (r1,c1) = cellvec{i}(1,3);
结束
矩阵=默认;
结束

zehra乌
zehra乌 2020年11月12日
这里有另一个解决方案。
函数M = sparse2matrix(a)
[t c] = size(a);
M = 0 (a{1,1});
[x y] = size(m);
Ii = 1:x;
Jj = 1:y;
M (ii,jj) = a{1,2};
结束
结束
I = 3:c;
V = a(1,i);
M (v{1,1}(1,1),v{1,1}(1,2)) = v{1,1}(1,3);
结束

阿尔贝托•吉尔
阿尔贝托•吉尔 2020年12月29日
编辑:阿尔贝托•吉尔 2020年12月29日
你好,
你觉得这个代码怎么样?
函数矩阵= sparse2matrix (cll)
如果iscell (cll) = = 1
声明值,cs=数组的大小;Cdn =标称值;N =最大价值;
cs = cll {1};cdn = cll {1,2};N =大小(慢性淋巴细胞白血病,2);
用标称值和大小创建矩阵。
厘米= (cs) * cdn的;
n = 3: n;
慢性淋巴细胞白血病cxdn = {1, n};
选择输入值中的值。
厘米(cxdn (1, 1), cxdn(1、2))= cxdn(1、3);
结束
矩阵=厘米;
其他的
错误(输入必须是单元格类);
结束
结束

心怡露
心怡露 2021年1月19日
函数矩阵= sparse2matrix (cellx)
矩阵= 0 (cellx {1});
矩阵(:,)= cellx {2};
2 = 3:长度(cellx)
num = cellx {2};
全国矿工工会矩阵(num (1), (2)) = num (3);
结束
结束
1评论
里克
里克 2021年1月19日
这个答案增加了什么?它教会我们什么?为什么不应该删除?

登录评论。


明阮
明阮 2021年3月27日
编辑:明阮 2021年3月27日
我的想法是
函数矩阵= sparse2matrix(ABC)
r = ABC{1}(1);
c = ABC{1}(2);
B = 0 (r,c);%构成一个零矩阵
B(1:end) = ABC{2};%表示带有第二个元素的稀疏矩阵
i = 3:长度(ABC)%和加法
a1 = ABC{i}(1,1);
a2 = ABC{i}(1,2);
B(a1,a2) = ABC{i}(1,3);
结束
矩阵= B;
结束

火焰沙
火焰沙 2021年9月13日
编辑:沃尔特·罗伯森 2021年9月13日
函数矩阵= sparse2matrix(cellvec)
Jj = cell2mat(cellvec);
M = jj(3)*ones(jj(1,[1,2]));
N = 4;
n < =长度(jj)
M (jj(n),jj(n+1)) = jj(n+2);
N = N +3;
结束
矩阵= m;

Sumanth Bayya
Sumanth Bayya 2021年10月19日
编辑:Sumanth Bayya 2021年10月19日
函数M = sparse2matrix(cellvec)
Sz = cellvec{1};
Val = cellvec{2};
M = val*ones(sz);
I = 3:length(cellvec)
El = cellvec{i};
M(el(1), el(2)) = el(3);
结束
结束

Ujwal Dhakal
Ujwal Dhakal 2022年1月7日
函数矩阵= sparse2matrix (cellvec)
[a b] = size(cellvec);%存储b中单元格元素的数量,而a总是1,因为cellvec是一个向量
A = cellvec{1,1};%是加载到向量a中的矩阵的大小
default_element = cellvec {1,2};
%预分配矩阵大小为m*n,所有元素为默认值
我= 1:(1)%a(1)是矩阵的行数
j = 1: (2)%a(2)是矩阵的列数
矩阵(i, j) = cellvec {1,2};
结束
结束%矩阵生成时,所有元素设置为默认值
2 = 3: b%此循环从单元格vec中的3个元素运行到no
矩阵(cellvec {1, 2} (1, 1), cellvec{1, 2}(1、2))= cellvec{1, 2}(1、3);
结束

Karnajit Banik
Karnajit Banik 2022年1月26日
编辑:沃尔特·罗伯森 2022年10月15日
函数M = sparse2matrix(cellvec)
Sz = cellvec{1};
Val = cellvec{2};
M = val*ones(sz);
I = 3:length(cellvec)
El = cellvec{i};
M(el(1), el(2)) = el(3);
结束
结束

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!