在矢量Matlab中创建随机值

时间:2017-06-16 23:40:37

标签: matlab vector random

我有这个载体:

人口= [3,5,5,2,0,5,10,50,0,1];

我需要用1到4之间的随机值填充此向量,只有向量中有0值。

我怎么做?

编辑:有一种方法可以使用randperm函数吗?

2 个答案:

答案 0 :(得分:0)

首先,找到零元素,然后生成随机值,然后替换这些元素:

Population = [3, 5, 0, 2, 0, 5, 10, 50, 0, 1];
idx = find(Population==0);
Population(idx) = 3 * rand(size(idx)) + 1;

如果你需要整数(没有指定),只需在最后一个语句中舍入生成的随机数,如round(3*rand(size(idx))+1);或使用randi(根据@OmG的回答建议):randi([1,4], size(idx))

答案 1 :(得分:0)

您可以使用以下代码:

function downloadFile() {


 window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {

alert('file system open: ' + fs.name);


var url = 'https://....';
// Parameters passed to getFile create a new file or return the file if it already exists.
fs.root.getFile('downloaded-image.png', { create: true, exclusive: false }, function (fileEntry) {
    download(fileEntry, url, true);

}, alert("fail1"));
}, alert("fail2"));

}

function download(fileEntry, url, readBinaryData) {

    var fileTransfer = new FileTransfer();
    var fileURL = cordova.file.externalRootDirectory + "filename.png";  

    fileTransfer.download(
        url,
        fileURL,
        function (entry) {
            alert("Successful download...");
            alert("download complete: " + entry.toURL());

            if (readBinaryData) {
              // Read the file...
              readBinaryFile(entry);
            }
            else {
              // Or just display it.
              displayImageByFileURL(entry);
            }
        },
        function (error) {
            alert("download error source " + error.source);
            alert("download error target " + error.target);
            alert("upload error code" + error.code);
        },
        null, // or, pass false
        {
            //headers: {
            //    "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
            //}
        }
    );

    };