matlab避免使用for_在for循環中使用./神祕的MATLAB錯誤

我需要在MATLAB中做一個for循環來將矩陣中的每列分開一個單獨的列向量。我只想對矩陣中的列進行選擇,而不是所有的列。在for循環中使用./神祕的MATLAB錯誤

這是我喜歡做的事,其中指數是整數19X1矢量(不是所有連續的數字)的東西,big_matrix是82x24,並且other_column是82x1:

matrix_to_fill = zeros(82,length(Indexes));

for x = Indexes

new_column = big_matrix(:,x)./other_column;

new_index = find(Indexes==x);

matrix_to_fill(:,new_index) = new_column;

end

當我運行此我得到以下錯誤:

Error using ./

Matrix dimensions must agree.

我可以分別運行每個迭代沒有得到錯誤,所以我知道矩陣尺寸一致。更重要的是,如果我作爲載體打出來的指數,它工作正常:

matrix_to_fill = zeros(82,length(Indexes));

for x = [1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23]

new_column = big_matrix(:,x)./other_column;

new_index = find(Indexes==x);

matrix_to_fill(:,new_index) = new_column;

end

而且我覺得「X =索引」語法是好的,因爲我測試過,使用剛:

for x = Indexes

disp(x)

end

所以我完全難倒了。任何幫助將非常感激!

+1

使用[MATLAB的調試器](http://www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html)或['dbstop if error'](http:// www .mathworks.com/help/matlab/ref/dbstop.html)更具體地說,可以在拋出錯誤時評估工作區。 –

+1

如果你用'repmat(other_column,1,numel(Indexes))'替換循環中的other_column?這很可能是因爲在第一種情況下,您使用'for x = Indexes',並且Matlab一次對所有列執行操作,而如果使用'for x = [1 4 5 ...]',則它循環遍歷每個單獨的「Indexes」元素使尺寸一致。 –

+0

請注意MATLAB中'for'循環的運行方式。 'for'循環可以接受一個**矩陣**作爲輸入,並且循環索引的每次迭代一次接受矩陣的一列。查看重複鏈接的帖子瞭解更多詳情。 'Indexes'是你的情況中的一個列向量,這就是爲什麼MATLAB只迭代這個循環一次。在循環之前,Phil對於轉置'Indexes'的回答解決了你的問題。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值